考虑以下情况,我正在测试注入的依赖项的方法是否被调用了特定次数:
[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……)