Mat*_*hew 2 asp.net asp.net-mvc rhino-mocks
你好,我试着写一个测试我可以模拟一个HttpRequestBase来返回这样的帖子值吗?请帮助,因为它非常紧急,我怎么能实现这一点?
var collection = new NameValueCollection();
collection.Add("Id", "1");
collection.Add("UserName", "");
var mocks = new MockRepository();
using (mocks.Record())
{
Expect.Call(requestBase.Params).Return(collection);
}
Run Code Online (Sandbox Code Playgroud)
基本上我有一个要求,要求我模拟请求post参数而不是表单值,因为UI客户端不是html表单,任何想法如何伪造/模拟httprequest post params?返回类型是nameVaueCollection
你不会喜欢听到这个,但你会以错误的方式解决这个问题.您应该使用模型作为输入,并让模型绑定器填充属性,而不是直接从请求参数中获取值.这将使您的生活,包括模拟更容易,因为您将提供模型作为操作方法的参数,而不是必须模拟HttpRequest对象.
var model = new UserModel { ID = 1, UserName = string.Empty };
var controller = new FooController();
var result = controller.FooAction( model );
Run Code Online (Sandbox Code Playgroud)
如果你必须使用参数,那么至少我建议你使用AAA语法进行模拟.
var request = MockRepository.GenerateMock<HttpRequestBase>();
var context = MockRepository.GenerateMock<HttpContextBase>();
var collection = new NameValueCollection();
collection.Add("Id", "1");
collection.Add("UserName", "");
context.Expect( c => c.Request ).Return( request ).Repeat.Any();
request.Expect( r => r.Params ).Return( collection ).Repeat.Any()
var controller = new FooController();
controller.ControllerContext = new ControllerContext( context, new RouteData(), controller );
var result = controller.FooAction();
...
context.VerifyAllExpectations();
request.VerifyAllExpectations();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2276 次 |
| 最近记录: |