.net – 单元测试api控制器的示例代码
发布时间:2020-12-16 00:37:26 所属栏目:asp.Net 来源:网络整理
导读:是否有示例代码显示单元测试继承自api控制器的控制器? 我正在尝试单元测试一个POST,但它是失败的。我相信我需要设置HttpControllerContext进行测试,但不知道如何 谢谢 解决方法 这段代码应该展示后期测试的基础知识。假设您有一个注册到控制器的存储库。
是否有示例代码显示单元测试继承自api控制器的控制器?
我正在尝试单元测试一个POST,但它是失败的。我相信我需要设置HttpControllerContext进行测试,但不知道如何 谢谢 解决方法
这段代码应该展示后期测试的基础知识。假设您有一个注册到控制器的存储库。我正在使用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 – 可以为IIS的HTTP压缩添??加axd扩展吗
- asp.net-mvc-4 – 登录后WebSecurity.CurrentUse
- ASP.NET Core 企业级开发架构简介及汇总
- asp.net – 身份cookie在一段时间后会丢失自定义
- 在 ASP.NET Web API 中使用 Attribute 统一处理异
- 如何在ASP.net MVC中正确执行异步方法?
- asp.net – modalpopupextender取消按钮,就好像它
- asp.net-mvc-5 – 在MVC5中启用和使用角色管理
- asp.net-mvc-3 – Foreach ViewBag数据给出’对象
- asp.net – 使用ASP:文本框作为
热点阅读