.net – 单元测试api控制器的示例代码
发布时间:2020-05-23 16:20:53 所属栏目:asp.Net 来源:互联网
导读:是否有示例代码显示单元测试继承自api控制器的控制器? 我正在尝试单元测试一个POST,但它是失败的。我相信我需要设置HttpControllerContext进行测试,但不知道如何 谢谢 这段代码应该展示后期测试的基础知识。假设您有一个注册到控制器的存储库。我正在使用M
|
是否有示例代码显示单元测试继承自api控制器的控制器?
解决方法这段代码应该展示后期测试的基础知识。假设您有一个注册到控制器的存储库。我正在使用MVC 4 RC不是测试版,如果你使用Beta的Request.CreateResponse(…有一点不同,所以给我一个喊…给定控制器代码有点像这样: public class FooController : ApiController
{
private IRepository<Foo> _fooRepository;
public FooController(IRepository<Foo> fooRepository)
{
_fooRepository = fooRepository;
}
public HttpResponseMessage Post(Foo value)
{
HttpResponseMessage response;
Foo returnValue = _fooRepository.Save(value);
response = Request.CreateResponse<Foo>(HttpStatusCode.Created,returnValue,this.Configuration);
response.Headers.Location = "http://server.com/foos/1";
return response;
}
}
单元测试会看起来像这样(NUnit和RhinoMock) Foo dto = new Foo() {
Id = -1,Name = "Hiya"
};
IRepository<Foo> fooRepository = MockRepository.GenerateMock<IRepository<Foo>>();
fooRepository.Stub(x => x.Save(dto)).Return(new Foo() { Id = 1,Name = "Hiya" });
FooController controller = new FooController(fooRepository);
controller.Request = new HttpRequestMessage(HttpMethod.Post,"http://server.com/foos");
//The line below was needed in WebApi RC as null config caused an issue after upgrade from Beta
controller.Configuration = new System.Web.Http.HttpConfiguration(new System.Web.Http.HttpRouteCollection());
var result = controller.Post(dto);
Assert.AreEqual(HttpStatusCode.Created,result.StatusCode,"Expecting a 201 Message");
var resultFoo = result.Content.ReadAsAsync<Foo>().Result;
Assert.IsNotNull(resultFoo,"Response was empty!");
Assert.AreEqual(1,resultFoo.Id,"Foo id should be set"); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – Razor引擎和ember.js可以一起工作吗?
- asp.net – 如何从下拉列表中选择“其他”选项时验证所需的
- asp.net-mvc – 如何实现在jqgrid搜索?
- asp.net – Infragistics WebGrid与Telerik网格
- 在ASP.Net应用程序中,我可以获得请求包含哪些安全协议(SSL3
- asp.net-mvc – 在IIS6上使用jqGrid和ASP.NET MVC 2找不到P
- asp.net – aspnet_compiler找到错误版本的System.Web.WebP
- asp.net-mvc – Kendo Grid Edit InLine Custom Validation
- asp.net-mvc-3 – 如何创建通用的MVC3编辑器模板?
- asp.net – XmlSerializer可以反序列化为Nullable吗?
推荐文章
站长推荐
- asp.net-mvc – 如何扩展/架构ASP.NET MVC 3授权
- asp.net – Isapi过滤器无法在IIS 7上运行(在IIS
- asp.net-web-api – ASP.Net Web API帮助页面:记
- asp.net – 使用Post后面的Post方法重定向到另一
- asp.net-mvc – AutoMapper.Mapper不包含CreateM
- asp.net – 加快你的IIS
- asp.net-mvc – 在ASP.NET MVC视图中允许多少逻辑
- asp.net-mvc – VaryByParam =“*”是否也读取了
- asp.net-mvc – ASP.NET MVC 4,迁移 – 如何在生
- asp.net – JMeter测试ASP .NET网页有多好?
热点阅读
