2010-01-08 32 views
1

之前是这样的:单元测试TryUpdateModel在MVC 2 RC尴尬的行为

TryUpdateModel(entity, null, null, new[] { "Name", "Controller" }); 

我能单元测试这个控制器动作只是在我的测试中使用这个:

controller.ValueProvider = myFormCollection.ToValueProvider(); 

将我的代码迁移到MVC 2后,这不再起作用。它在FormCollection中的GetValue方法实现中保持失败,因为它验证您要求的值不为null或为空。事情是这个代码在运行时工作,但不是在我的单元测试。我没有使用前缀,因此我将NULL作为前缀值发送。

我查看了MVC 2 RC源代码,并且控制器的ValueProvider查找的第一个值是前缀,因此它失败了。我必须将哪个提供程序分配给controller.ValueProvider,以便它可以在我的单元测试中工作?

编辑:非常简短地问,如何告诉TryUpdateModel不要在我的单元测试中使用前缀,以便它不引发异常?

谢谢!

回答

2

MVC 2 RC中的已知错误将在下一次修正中修复。

从在这个问题上一个单独的电子邮件:

顺便说一句,而单元测试你 可能要使用 SimpleValueProvider类型。 (可以在MVC单元测试项目中找到 ,所以 如果需要 ,则可以将其复制到自己的项目中。)它实际上只是一个 字典,它也可以 实现IValueProvider。如果你想存储 的值,例如{“foo”,42}而不是 {“foo”,“42”}来进行单元测试,那么 会更有用。