当使用Moq Verify()方法调用计数时,测试失败的错误消息包含使用Moq的实际方法调用计数

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

考虑以下情况,我正在测试注入的依赖项的方法被调用特定次数:

[Fact]
public void WhenBossTalksEmployeeBlinksTwice()
{
    // arrange
    var employee = new Mock<IEmployee>();
    employee.Setup(e => e.Blink());

    var boss = new Boss(employee.Object);

    // act
    boss.Talk();

    // assert
    employee.Verify(e => e.Blink(), Times.Exactly(2)); // Passes as expected
    employee.Verify(e => e.Blink(), Times.Exactly(1)); // Fails as expected
}

当我强制失败的测试时,输出为:

Moq.MockException:1次未对模拟执行调用:e => e.Blink()

更好的是:

Moq.MockException:意外执行了2次调用,而不是1次:e => e.Blink()

以下是与测试有关的项目:

public interface IEmployee { void Blink(); }

public class Boss {
    private readonly IEmployee _employee;
    public Boss(IEmployee employee) { _employee = employee; }

    public void Talk() {
        _employee.Blink();
        _employee.Blink();
    }
}

在失败的测试的错误消息中,是否有可能收集并显示依赖项方法的实际调用次数?

我不确定是否很重要,但是我正在使用Moq v3.1.416.3(我知道不是最新的,但是我正在使用的另一个库尚未更新到Moq 4.x ...)] >

请考虑以下内容,在这里我将测试注入的依赖项的方法被调用特定的次数:[事实] public void WhenBossTalksEmployeeBlinksTwice(){//安排var ...

unit-testing mocking moq moq-3
1个回答
17
投票

我不知道在Moq3中收集信息的直接方法。我要做的是在Blink的设置上使用回调

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