如何使用指定的参数设置/验证方法调用

时间:2017-08-25 09:03:28

标签: c# moq

我需要测试是否使用指定参数调用方法GetKey(object target)。我知道验证可以像

一样调用
processor.Verify(x => x.GetKey(It.Is<object>(y => y == target)));

但是应该如何设置?

processor.Setup(x => x.GetKey(It.Is<object>(y => y == target)));

processor.Setup(x => x.GetKey(It.IsAny<object>()));

这两种设置有什么区别?在这种情况下真的重要吗?

处理器界面:

public interface ILayoutProcessor
{
    object GetKey(object target);
}

2 个答案:

答案 0 :(得分:1)

只需传递SetupVerify方法表达式

中的指定参数即可
processor.Setup(x => x.GetKey(target)).Verifiable();

稍后验证

processor.Verify();

processor.Verify(x => x.GetKey(target), Times.AtLeastOnce);

答案 1 :(得分:1)

processor.Setup(x => x.GetKey(It.Is<object>(y => y == target)));

是使用匹配指定条件的对象调用方法时的设置。

processor.Setup(x => x.GetKey(It.IsAny<object>()));

是一个匹配任何对象参数的设置。

在您的情况下,如果您只想验证使用某个参数调用该方法,则使用哪个设置无关紧要。实际上,如果未使用函数的返回值,则甚至不需要设置即可进行验证。但是,在您的情况下,我假设您在评论中提及CallbackReturns

请注意,您可以简单地将验证缩短为:

processor.Verify(x => x.GetKey(target));