gpt4 book ai didi

c# - 将参数传递给 NUnit 中的 TestDelegate

转载 作者:太空狗 更新时间:2023-10-29 18:16:28 24 4
gpt4 key购买 nike

我正在尝试创建一个接受测试委托(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/

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