gpt4 book ai didi

asp.net-mvc - 断言 MVC Controller 操作的返回类型

转载 作者:行者123 更新时间:2023-12-04 06:45:24 25 4
gpt4 key购买 nike

您如何断言在 System.RuntimeType 中包含预期类型时返回了它?
作为一个更大的单元测试的一部分,以验证一个 Action 是否具有正确的参数和分配的 Action 过滤器,我正在针对一个填充的 MethodInfo 实例进行断言。当我对“action.ReturnParameter”断言时,它失败了,因为它说类型是 System.RunTimeType。虽然我知道这是对预期类型的​​包装,但我似乎无法找到一种方法来断言被包装的实例是预期类型 - 到目前为止我想出的最好方法是断言反对姓名或全名,但这很可怕,因为它只是使用“魔术字符串”。
任何人都可以帮忙吗?由于我的谷歌搜索没有发现任何有用的东西,我猜它有一个非常简单的解决方案,我只是没有看到它。
代码如下:

[TestMethod]
public void CheckActionFilterSet()
{
MethodInfo action = new CustomerController((new MockHttpContext()).Object)
.GetType().GetMethods(BindingFlags.Public | BindingFlags.Instance)
.Where(mi => mi.Name.Equals("Search")).First();
Assert.That(action.ReturnParameter.ParameterType, Is.InstanceOf(typeof(ViewResult)), "View Result should be of expected type");
}
异常消息是:

View Result should be of expected type

Expected: instance of

<System.Web.Mvc.ViewResult>

But was:

<System.RuntimeType>

最佳答案

只需调用 Controller 方法并检查返回的对象的类型:

var result = new CustomerController((new MockHttpContext()).Object).Search(....);

Assert.That(result, Is.InstanceOf(typeof(ViewResult)), "View Result should be of expected type");

如果您想,您还可以检查 ViewData/model 的值...

关于asp.net-mvc - 断言 MVC Controller 操作的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3804950/

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