我正在测试一个拥有公共setter但是私有getter的属性。 我知道我可以验证使用给定值两次调用setter:
html
但我无法做的就是验证设置器被调用了两次。
这可能吗?
由于
答案 0 :(得分:3)
您可以使用Times.Exactly
方法执行此操作:
mockTable.VerifySet(m => m.CurrentIndex = 0, Times.Exactly(N));
<强>更新强> 我在第一时间错误地指出了你的观点,直到你在评论中澄清它为止。
您可以在测试中编写以下断言:
mockTable.VerifySet(m => m.CurrentIndex = 0, Times.Once);
mockTable.VerifySet(m => m.CurrentIndex = 1, Times.Once);
mockTable.VerifySet(m => m.CurrentIndex = It.IsNotIn(0, 1), Times.Never);
它正在测试你想要的行为:只有当CurrentIndex
wat设置正好两次时,测试才会通过:一次为0,另一次为1,不允许其他值/次。
答案 1 :(得分:0)
我不确定我是否正确理解。如果您不需要知道CurrentIndex中使用的值,那么您可以使用它:
mockTable.VerifySet(m => m.CurrentIndex = It.IsAny<Int32>(), Times.Exactly(2));
但是,如果您确实需要验证CurrentIndex中的值,则需要按照您现在的方式进行操作,如果次数过高,则需要for
。
答案 2 :(得分:0)
另一种变体:
mockTable.VerifySet(m => m.CurrentIndex = 0, Times.Once());
mockTable.VerifySet(m => m.CurrentIndex = 1, Times.Once());
mockTable.VerifySet(m => m.CurrentIndex = It.IsAny<int>(), Times.Exactly(2));