asp.net – 我如何单元测试EntitySetController
我尝试单元测试EntitySetController.我可以测试Get但在测试Post方法时遇到问题.
我使用了SetODataPath和SetODataRouteName,但是当我调用this.sut.Post(实体)时,我遇到了很多关于丢失位置标头,丢失OData-Path,丢失路由的错误. 我没办法. 有人对我有意见吗? 谢谢你的帮助 解决方法
来这里寻找解决方案.这似乎工作,但不确定是否有更好的方法.
控制器需要最少的CreateEntity和GetKey覆盖: public class MyController : EntitySetController<MyEntity,int> { protected override MyEntity CreateEntity(MyEntity entity) { return entity; } protected override int GetKey(MyEntity entity) { return entity.Id; } } MyEntity非常简单: public class MyEntity { public int Id { get; set; } public string Name { get; set; } } 看起来你至少需要: [TestMethod] public void CanPostToODataController() { var controller = new MyController(); var config = new HttpConfiguration(); var request = new HttpRequestMessage(); config.Routes.Add("mynameisbob",new MockRoute()); request.RequestUri = new Uri("http://www.thisisannoying.com/MyEntity"); request.Properties.Add("MS_HttpConfiguration",config); request.Properties.Add("MS_ODataPath",new ODataPath(new EntitySetPathSegment("MyEntity"))); request.Properties.Add("MS_ODataRouteName","mynameisbob"); controller.Request = request; var response = controller.Post(new MyEntity()); Assert.IsNotNull(response); Assert.IsTrue(response.IsSuccessStatusCode); Assert.AreEqual(HttpStatusCode.Created,response.StatusCode); } 我不太确定IHttpRoute,在aspnet源代码中(我必须链接到这一点来解决这个问题)测试使用这个接口的模拟.因此,对于此测试,我只需创建一个模拟器并实现RouteTemplate属性和GetVirtualPath方法.测试期间未使用界面上的所有其他内容. public class MockRoute : IHttpRoute { public string RouteTemplate { get { return ""; } } public IHttpVirtualPathData GetVirtualPath(HttpRequestMessage request,IDictionary<string,object> values) { return new HttpVirtualPathData(this,"www.thisisannoying.com"); } // implement the other methods but they are not needed for the test above } 这对我有用,但我真的不太确定ODataPath和IHttpRoute以及如何正确设置它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net core 使用 AccessControlHelper 控制访问
- asp.net-mvc – 在ASP.NET MVC中封装用户控件
- asp.net – 在数据库表中有效地查找唯一值
- .Net Core微服务入门全纪录(完结)——Ocelot与
- .net – ELMAH对企业库异常处理块
- asp.net-mvc – 在EditorTemplate中渲染字段名称
- asp.net-mvc – 跨项目共享剃刀视图
- asp.net-mvc – ASP.NET MVC – 从查询字符串中获
- asp.net – 异常日志记录HttpModule不会从ASP .N
- 可能的Bug与ASP.NET MVC 3路由?