如何在System.RuntimeType中包装时声明返回预期类型?
作为更大单元测试的一部分,用于验证操作是否具有正确的参数和已分配的操作过滤器,我正在针对填充的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");
}
异常消息是:
查看结果应为预期类型
预期:
的实例< System.Web.Mvc.ViewResult>
但是:
< System.RuntimeType>
答案 0 :(得分:3)
只需调用控制器方法并检查返回的对象的类型:
var result = new CustomerController((new MockHttpContext()).Object).Search(....);
Assert.That(result, Is.InstanceOf(typeof(ViewResult)), "View Result should be of expected type");
如果您想要...还可以检查ViewData / model的值。