为 void 扩展方法创建测试

问题描述 投票:0回答:1

如何为 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...?
c# unit-testing extension-methods xunit
1个回答
0
投票
[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
    }
}

应该可以解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.