什么可能导致It.IsAny<string>()
在每次调用时返回null?假设它被设计为返回一个非空字符串,我不正确吗?Moq - It.IsAny <string>()总是返回null
以下是用法 - 其中Login方法为空的第二个参数(连接字符串)引发ArgumentNullException。我假设It.IsAny<string>()
将提供一个非空字符串,它将绕过ArgumentNullException。
var mockApiHelper = new Mock<ApiHelper>();
mockApiHelper.Setup(m => m.Connect(It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>()));
var repositoryPlugin = new RepositoryPlugin(mockApiHelper.Object);
repositoryPlugin.Login(new CredentialsInfo(), It.IsAny<string>());
Assert.IsTrue(repositoryPlugin.LoggedIn,
"LoggedIn property should be true after the user logs in.");
啊,我明白了。我已经为这个问题添加了完整的测试。我使用它既是为了我的模拟,也是为了一个真实的物体。但它听起来像它不适用于实际的物体? – Jeremy 2011-05-23 14:47:39
@Jeremy:不,这个想法是,你将真实值(以及样本值)传递给你的真实代码。 'It.IsAny'旨在验证从您的真实代码传递给您的模拟值。 – 2011-05-23 14:48:48
知道了 - 所以我一直在想它作为一种数据生成技术......但它并不是为此而设计的。谢谢! – Jeremy 2011-05-23 14:59:16