我有一个接受FormCollection作为参数的控制器方法。 然后,控制器方法使用UpdateModel(Model,new [] {P1,P2});
构建模型我想对上述方法进行单元测试。我正在使用P1和P2值填充formcollection,但是从单元测试中调用时模型没有正确构建。
有没有人遇到类似问题?
答案 0 :(得分:3)
UpdateModel
方法在填充模型时查看Request
对象,它完全忽略了您传递的FormCollection
。因此,您需要模拟请求并将值添加到此对象。但是那些不值得付出努力的工作,我建议你采用更好的方法:而不是使用FormCollection
作为操作参数,然后在操作中调用UpdateModel
使用强类型的操作参数:
public ActionResult Foo(SomeViewModel model)
{
// The model binder will automatically call UpdateModel and populate
// the model from the request so that you don't need to manually
// do all this stuff
...
}
并且在单元测试中,只需在调用控制器动作时传递所需的模型。