我正在尝试使用 Moq 验证方法调用,但我无法完全正确地理解语法。目前,我已将此作为我的验证:
repository.Verify(x => x.ExecuteNonQuery("fav_AddFavorites", new
{
fid = 123,
inputStr = "000456"
}), Times.Once());
代码可以编译,但测试失败并出现错误:
Expected invocation on the mock once, but was 0 times:
x => x.ExecuteNonQuery("fav_AddFavorites", new <>f__AnonymousType0<Int32, String>(123, "000456"))
No setups configured.
Performed invocations:
IRepository.ExecuteNonQuery("fav_AddFavorites", { fid = 123, inputStr = 000456 })
如何验证方法调用并匹配匿名类型的方法参数?
UPDATE
回答问题:
我试图验证该方法是否被调用以及参数是否正确。
我试图验证的方法的签名是:
int ExecuteNonQuery(string query, object param = null);
设置代码很简单:
repository = new Mock<IRepository>();
UPDATE 2
看起来这是 Moq 以及它如何处理 .Net 中的匿名类型的问题。 Paul Matovich 发布的代码运行良好,但是,一旦代码和测试位于不同的程序集中,测试就会失败。