我需要测试是否使用指定参数调用方法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);
}
答案 0 :(得分:1)
只需传递Setup
或Verify
方法表达式
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>()));
是一个匹配任何对象参数的设置。
在您的情况下,如果您只想验证使用某个参数调用该方法,则使用哪个设置无关紧要。实际上,如果未使用函数的返回值,则甚至不需要设置即可进行验证。但是,在您的情况下,我假设您在评论中提及Callback
和Returns
。
请注意,您可以简单地将验证缩短为:
processor.Verify(x => x.GetKey(target));