- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一些单元测试,我有一个场景,如果条件为真, Controller 操作应该返回一个 HttpNotFoundResult
,否则它应该返回一个 ViewResult
并在其中包含一个特定的模型。
作为测试之一(测试应返回 ViewResult
的场景),我执行操作,然后尝试将结果转换为 ViewResult
。但是,当使用 var result = myController.MyAction() as ViewResult
(其中 result
是一个 ActionResult
)时,result
总是评估为 null...但是当我执行 var result = (ViewResult)myController.MyAction()
时,结果转换得很好。
这是为什么?我没有正确理解 as
的用法吗?
相关代码:
// My controller
public class MyController
{
..
public ActionResult MyAction(bool condition)
{
if(condition)
return HttpNotFound()
return View(new object());
}
}
// My test
public void MyTest()
{
....
var controller = new MyController();
var result = controller.MyAction(false) as ViewResult;
// result should be casted successfully by as, but it's not, instead it's unll
// however, this works
var result = (ViewResult) controller.MyAction(false);
// why is this?
}
编辑:带有要点的完整示例。抱歉,它似乎不喜欢语法高亮。 https://gist.github.com/DanPantry/dcd1d55651d220835899
最佳答案
由于没有人回答 - 我将我的 ASP MVC 更新为 ASP MVC 5,然后测试成功了。我有一种直觉,我的测试项目使用的是 ASP MVC 5,但包含 Controller 的项目运行的是 ASP MVC 4,并且因为它们来自不同的二进制文件,所以 Controller 类可以返回 ViewResult
ActionResult
的影子,但是测试项目无法从ViewResult
转换为ActionResult
,因为它对ViewResult
的理解是不同。
虽然这看起来很愚蠢,因为有人会认为在这种情况下我会遇到构建错误。
哦,好吧,升级修复了它。
关于c# - ActionResult 作为 ViewResult 返回 null.. 但我可以显式转换吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21603938/
如果我只返回一个 View ,从 Task 返回它是否有性能差异? [HttpGet] public Task Index() { return Task.FromResult(View());
所以我用函数内部的代码替换了 Controller 函数上的 [Authorize Attribute] 并想尝试返回与属性相同的结果,这可能吗?必须做出进一步的改变? 我试图从一个返回 ViewRe
我对 SO 进行了搜索,看起来这个问题经常被问到。我已经能够让模拟工作,并且我也能够毫无问题地执行 OnActionExecuted() 。这是我的单元测试。注释行是失败的行,我确信我没有 mock
我正在 MVC 5 中创建一个测试项目。 我遇到了错误 Error 1 Cannot convert type 'System.Threading.Tasks.Task' to 'System.Web
我已经编写了这个 Controller 方法和这个测试。 Controller 方法: public async Task Metric(string type, string source) {
我在我的 ASP.NET MVC Controller 上使用自定义授权过滤器,如果用户在特定操作上的授权失败,它会将用户重定向到登录屏幕以外的 url。 这对于返回 View 的操作没有问题,但我的
ASP.NET MVC 中的 ViewResult() 和 ActionResult() 有什么区别? public ViewResult Index() { return View(); }
名为 ViewResult 的 Controller 结果和 PartialViewResult 之间有什么区别?更重要的是,什么时候使用PartialViewResult? 最佳答案 Partial
我有一个 asp.net mvc4 应用程序,当我将其发布到 azure 时,加载页面的时间太长。我安装了glimpse来检查问题出在哪里,它显示 ViewResult.ExecuteResult 是
在我的单元测试中,当我使用 View 的操作名称时,ViewResult.ViewName 属性始终为空: return View(model); or return View(); 这是设计使然吗?
我正在编写一个简单的 CMS。 我希望能够加载一个 View ,将其包含在母版页中,然后扫描 HTML 以便我可以替换一些自定义标签(例如 {{blog}} 与我自己的博客输出)然后服务由浏览器决定。
其他提到 null ViewResults 的问题实际上似乎指的是 null Models(我肯定做计划测试的东西)。我是测试新手。今天刚开始我的第一个使用 TDD 的项目。我找到的一些资源,甚至是新
public override void OnException(ExceptionContext filterContext) { string controllerName = (stri
在我的 Controller 中,我有一个 Edit GET 方法来显示 View ,还有一个 Edit POST 方法来保存更改: public ViewResult Edit(int id) {
我正在尝试创建集成测试以确保我的 View 中没有任何运行时错误。因此,我需要创建一个测试来检查 ViewResult.ExecuteResult() 是否正常工作,但我似乎遇到了麻烦。 我找到了 t
我试图在 OnActionExecuted 方法覆盖 ActionFilterAttribute 类中返回一个 ViewResult 像下面... public override void OnAct
尽管 StackOverflow 上有几篇关于 MVC 中的单元测试操作结果的帖子,但我有一个具体的问题.... 这是我在 Controller 中的 ActionResult: public Act
我制作了一个 MVC 项目,我想将模型设置为来自过滤器的 View 。 但是我不知道,我该怎么做。 模型: public class TestModel { public int ID { g
如何决定是使用 ActionResult 还是 ViewResult?我知道 ActionResult 是一个抽象类,以 ViewResult 作为子类型,但我已经看到使用这两种实现相同功能的示例。它
我正在编写一些单元测试,我有一个场景,如果条件为真, Controller 操作应该返回一个 HttpNotFoundResult,否则它应该返回一个 ViewResult 并在其中包含一个特定的模型
我是一名优秀的程序员,十分优秀!