gpt4 book ai didi

c# - ActionResult 作为 ViewResult 返回 null.. 但我可以显式转换吗?

转载 作者:行者123 更新时间:2023-11-30 17:00:55 26 4
gpt4 key购买 nike

我正在编写一些单元测试,我有一个场景,如果条件为真, 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com