MOQ - 检查仅使用特定参数调用方法

Ale*_*lex 1 syntax unit-testing moq

我有一个方法可以为字典分配一些值,在我的Moq测试中,我想确保使用一组特定的参数(即字符串)调用它.

我尝试过各种各样的东西 - Setup,SetupSet,VerifySet等.他们都让我确保用我想要的参数调用一个方法,这很好.但是,我如何验证它没有被其他任何东西调用?以上方法都不会捕获此方案.

我试图使用It.IsInRange指定哪些参数是可以的,但是只接受整数,所以对于字典查找没什么用处.

谢谢,

亚历克斯

Gis*_*shu 10

_mockChef.Verify(chef => chef.Bake(It.Is<CakeFlavors>(vetoArgsPredicate), It.IsAny<bool>()), Times.Never());

您可以使用Argument Constraints,也可以使用It.Is<T>(predicate)对无效参数求值为true的方法,并将其与Times.Never()结合使用.

或者
你可以严格嘲笑,这里的另一个答案就是证明; 但它们往往使你的测试变得脆弱.因此,除非你绝对需要它们,否则不鼓励使用它们.

有关详细信息,请参阅此处的子弹#5和#9