作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试创建一个接受测试委托(delegate)或委托(delegate)并将参数传递给委托(delegate)对象的方法。这是因为我正在为 Controller 中的方法创建一个测试,这些方法都采用相同的参数(一个 id),我不想为所有 Controller 方法创建一个测试。
我的代码:
protected void AssertThrows_NullReference_Og_InvalidOperation(TestDelegate delegateMethod)
{
Assert.Throws<NullReferenceException>(delegateMethod);
Assert.Throws<InvalidOperationException>(delegateMethod);
Assert.Throws<InvalidOperationException>(delegateMethod);
}
我想做什么:
protected void AssertThrows_NullReference_Og_InvalidOperation(TestDelegate delegateMethod)
{
Assert.Throws<NullReferenceException>(delegateMethod(null));
Assert.Throws<InvalidOperationException>(delegateMethod(string.Empty));
Assert.Throws<InvalidOperationException>(delegateMethod(" "));
}
编辑:我忘了提到 Controller 有一个返回值。因此无法使用 Action。
最佳答案
使用 Action<string>
传递接受单个字符串参数的方法。使用您的测试参数调用该操作:
protected void AssertThrowsNullReferenceOrInvalidOperation(Action<string> action)
{
Assert.Throws<NullReferenceException>(() => action(null));
Assert.Throws<InvalidOperationException>(() => action(String.Empty));
Assert.Throws<InvalidOperationException>(() => action(" "));
}
用法:
[Test]
public void Test1()
{
var controller = new FooController();
AssertThrowsNullReferenceOrInvalidOperation(controller.ActionName);
}
更新:
使用 Func<string, ActionResult>
对于返回 ActionResult 的 Controller 。您也可以为此目的创建通用方法。
关于c# - 将参数传递给 NUnit 中的 TestDelegate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14119703/
我正在尝试创建一个接受测试委托(delegate)或委托(delegate)并将参数传递给委托(delegate)对象的方法。这是因为我正在为 Controller 中的方法创建一个测试,这些方法都采
我是一名优秀的程序员,十分优秀!