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

Unit testing 使用Moq Verify()方法调用计数时,测试失败';的错误消息包含使用Moq的实际方法调用计数,unit-testing,mocking,moq,moq-3,Unit Testing,Mocking,Moq,Moq 3,考虑下面的内容,在这里我测试一个注入依赖性的方法被称为一个特定的次数: [事实] 当无通话时公共无效 { //安排 var employee=new Mock(); employee.Setup(e=>e.Blink()); var boss=新boss(employee.Object); //表演 老板,说话吧; //断言 employee.Verify(e=>e.Blink(),Times.justice(2));//按预期通过 employee.Verify(e=>e.Blink(),Ti

考虑下面的内容,在这里我测试一个注入依赖性的方法被称为一个特定的次数:

[事实]
当无通话时公共无效
{
//安排
var employee=new Mock();
employee.Setup(e=>e.Blink());
var boss=新boss(employee.Object);
//表演
老板,说话吧;
//断言
employee.Verify(e=>e.Blink(),Times.justice(2));//按预期通过
employee.Verify(e=>e.Blink(),Times.justice(1));//按预期失败
}
当我强制执行失败测试时,输出为:

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

更好的方法是:

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

以下是测试涉及的项目:

公共接口IEmployee{void Blink();}
公务舱老板{
私人只读雇员;
公共上司(雇员雇员){u employee=employee;}
公众闲谈{
_employee.Blink();
_employee.Blink();
}
}
是否可以在失败测试的错误消息中获取并显示依赖项方法被调用的实际次数?


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

我不知道如何在Moq3中直接获取信息。 我要做的是在设置闪烁时使用回调

int count=0;
employee.Setup(e=>e.Blink()).Callback(()=>count++);
...
employee.Verify(e=>e.Blink(),Times.justice(1),“Moq.MockException:调用意外执行”+count+“次,而不是1次:e=>e.Blink()”;//如预期的那样失败

好主意!当您个人使用moq4.x?+1作为示例代码时,您是否做了一些不同的事情:)因为我在谷歌搜索中发现了这一点,我想我会提供一个更新。在moqv4.1(可能在所有4.x中)中,您会得到类似这样的结果:“预期在模拟上调用一次,但调用次数为0次”。所以这个问题的答案现在是现成的。