gpt4 book ai didi

asp.net mvc rhino 模拟 httprequest 值

转载 作者:行者123 更新时间:2023-12-02 14:09:30 24 4
gpt4 key购买 nike

我正在尝试编写一个测试,我可以模拟 HttpRequestBase 以返回这样的 post 值吗?我怎样才能实现这个目标?

var collection = new NameValueCollection();
collection.Add("Id", "1");
collection.Add("UserName", "");


var mocks = new MockRepository();

using (mocks.Record())
{
Expect.Call(requestBase.Params).Return(collection);
}

基本上,我有一个要求,要求我模拟请求发布参数而不是表单值,因为 UI 客户端不是 html 表单,有什么想法如何伪造/模拟 httprequest 发布参数吗?返回类型是 nameVaueCollection

最佳答案

你不会喜欢听这个,但你的处理方式是错误的。您应该使用模型作为输入,并让模型绑定(bind)器填充属性,而不是直接从请求参数中获取值。这将使您的生活(包括模拟)变得更加容易,因为您将提供一个模型作为操作方法的参数,而不必模拟 HttpRequest 对象。

var model = new UserModel { ID = 1, UserName = string.Empty };

var controller = new FooController();

var result = controller.FooAction( model );

如果您必须使用参数,那么至少我建议您在模拟中使用 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();

关于asp.net mvc rhino 模拟 httprequest 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3195839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com