单元测试在MVC 2 RC中的TryUpdateModel尴尬行为

时间:2010-01-08 16:38:03

标签: c# asp.net-mvc-2

在使用MVC 2 RC之前,我使用的是MVC 1,我用来更新控制器中的对象的代码是:

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

我能够在我的测试中单独测试这个控制器动作:

controller.ValueProvider = myFormCollection.ToValueProvider();

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

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

编辑:非常简短地问一下,如何告诉TryUpdateModel不要在我的单元测试中使用前缀,这样它就不会抛出异常?

谢谢!

1 个答案:

答案 0 :(得分:2)

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

关于此问题的单独电子邮件:

  

顺便说一下,在单元测试的同时   可能想用   SimpleValueProvider类型。 (有可能   发现在MVC单元测试项目中,所以   你可以将它复制到你自己的项目中   你想要的。)它实际上只是一个   字典也   实现IValueProvider。这个会   如果你想存储更有用   价值如{“foo”,42}而不是   {“foo”,“42”}用于单元测试。