如何为 void 扩展方法创建测试?我正在使用 XUnit。
我有一个扩展方法,如果某件事为真,它会抛出异常。
public static void IsClosed(this List<Contract> contracts)
{
if (contracts.Any(x => x.Status == Status.Closed) throw new IsClosedException();
}
在测试中我无法举出例子:
var sut = contracts.IsClosed();
我需要模拟合约列表吗?
var contracts = Mock<List<Contract>>());
但是然后呢?
contracts.Setup...?
或者
contracts.Invoke...?
[Fact]
void ShouldThrowIsClosedException()
{
// Just create a list that you expect to trigger the Exception ...
List<Contract> contracts = new() { new() {Status == Status.Closed}};
try
{
contracts.IsClosed();
Assert.Fail("IsClosedException was expected.");
}
catch(IsClosedException)
{
// Expected
}
}
应该可以解决问题。