我在ASP.NET MVC 3.0中测试我的Controller时遇到了严重的问题。
这是控制器的方法之一:
public ActionResult Create(FormCollection collection)
{
IModel model = null;
model = modeldao.createNewObject(ref model);
TryUpdateModel(model, null, null, new[] { "id" });
... // rest
}
前面提到的方法测试中最重要的部分就是那样写的
Controller controller = new Controller(// list of mocks)
FormCollection form = new FormCollection();
form.Add("name", "object1");
form.Add("parentobject.id", "1");
controller.ValueProvider = form.ToValueProvider();
controller.Create(form);
现在,即使我模仿ArgumentNullException
对象,它也会抛出ControllerContext
。当我尝试在控制器中设置ValueProvider
属性时:
controller.ValueProvider = form.ToValueProvider();
然后我得到MethodAccessException
并且我被告知要添加新的程序集:System.ComponentModel.DataAnnotations
。
我已经阅读了一些关于测试MVC 3 Controller的文章(其中没有很多),但他们的提示根本不起作用,尽管代码似乎相似:
http://www.codecapers.com/post/ASPNET-MVC-Unit-Testing-UpdateModel-and-TryUpdateModel.aspx http://www.hanselman.com/blog/ASPNETMVCSessionAtMix08TDDAndMvcMockHelpers.aspx
我想问一下是否有人遇到过这种问题并解决了它。