asp.net-mvc-4 – 如何为使用StatusCode 404抛出HttpException的
发布时间:2020-12-16 09:40:37 所属栏目:asp.Net 来源:网络整理
导读:我在控制器中有一个下面的动作,它抛出HttpException,状态代码为404: public async TaskActionResult Edit(int id){ Project proj = await _service.GetProjectById(id); if( proj == null) { throw new HttpException(404,"Project not found."); }} 为了测
我在控制器中有一个下面的动作,它抛出HttpException,状态代码为404:
public async Task<ActionResult> Edit(int id) { Project proj = await _service.GetProjectById(id); if( proj == null) { throw new HttpException(404,"Project not found."); } } 为了测试这个场景,我写了下面的测试用例,我正在捕获AggregationException并重新抛出InnerException,它被期望为HttpException: [TestMethod] [ExpectedException(typeof(HttpException),"Project not found.")] public void Edit_Project_Load_InCorrect_Value() { Task<ActionResult> task = _projectController.Edit(3); try { ViewResult result = task.Result as ViewResult; Assert.AreEqual("NotFound",result.ViewName,"Incorrect Page title"); } catch (AggregateException ex) { throw ex.InnerException; } } 此测试成功运行并返回ExpectedException.我这里有两个问题: >这是编写单元测试的正确方法还是有更多 解决方法
有一种更好的方法可以测试它.我们编写了一个名为AssertHelpers.cs的类,其中包含此方法.这比ExpectedException更好的原因是ExpectedException实际上并没有验证它是否被抛出,它只是允许测试在抛出时通过.
例如,如果将404代码更改为200,则测试不会失败. public static void RaisesException<TException>(Action dataFunction,string exceptionIdentifier = null) { bool threwException = false; try { dataFunction(); } catch (Exception e) { threwException = true; Assert.IsInstanceOfType(e,typeof(TException)); if (exceptionIdentifier != null) Assert.AreEqual(exceptionIdentifier,e.Message); } if (!threwException) Assert.Fail("Expected action to raise exception with message: " + exceptionIdentifier); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-identity-2 – asp.net mvc identity 2运行两个不同
- asp.net-mvc-5 – MVC AttributeRoute似乎忽略了RoutePrefi
- asp.net-mvc-3 – dataannotations在主键上设置标识种子值,
- 如何实现IIS 7.0对非HTTP协议的支持
- asp.net-mvc – 在WebApi的ActionFilterAttribute的OnActio
- asp.net-mvc – SignalR无法从外部程序集中找到集线器
- asp.net-mvc – 更正错误后ValidationSummary是否仍然可见?
- asp.net – default.aspx中的“StartTag:invalid element
- asp.net-mvc – MVC 5脚手架不为基本EF派生数据发出引导类
- 如何在ASP.NET生成的Word文件中嵌入图像
推荐文章
站长推荐
热点阅读