使用 FormCollection 参数的 MVC 单元测试控制器方法
我有一个控制器方法,它接受 FormCollection 作为参数。 然后控制器方法使用 UpdateModel(Model, new[] { P1, P2 }) 构建模型;
我想对上述方法进行单元测试。我正在使用 P1 和 P2 值填充表单集合,但从单元测试调用时模型未正确构建。
有人遇到过类似的问题吗?
I am having a controller method which accepts FormCollection as a parameter.
the controller method then builds the model using UpdateModel(Model, new[] { P1, P2 });
I would like to unit test the above method. I am populating the formcollection with P1 and P2 values but the model is not build correctly when called from unit testing.
Has anyone faced similar issue?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
UpdateModel
方法在填充模型时查找Request
对象,并且完全忽略您传递的这个FormCollection
。因此,您需要模拟请求并将值添加到该对象。但这是很多不值得付出努力的工作,我会推荐您一种更好的方法:不要使用FormCollection
作为操作参数,然后在操作中调用UpdateModel
使用强类型操作参数:在单元测试中,在调用控制器操作时只需传递所需的模型。
The
UpdateModel
method looks in theRequest
object when populating the model and it completely ignores thisFormCollection
you are passing. So you will need to mock the request and add the values to this object. But thats lots of work that isn't worth the efforts and I would recommend you a better way: instead of usingFormCollection
as action parameter and then callingUpdateModel
inside your action use a strongly typed action parameter:and in the unit test simply pass the desired model when invoking the controller action.