我正在尝试使用Moq验证方法调用,但我无法正确地获得语法.目前我已将此作为我的验证:
repository.Verify(x => x.ExecuteNonQuery("fav_AddFavorites", new
{
fid = 123,
inputStr = "000456"
}), Times.Once());
Run Code Online (Sandbox Code Playgroud)
代码编译,但测试失败并出现错误:
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 })
Run Code Online (Sandbox Code Playgroud)
如何验证方法调用并匹配匿名类型的方法参数.
UPDATE
回答问题:
我试图验证方法被调用和参数是否正确.
我试图验证的方法的签名是:
int ExecuteNonQuery(string query, object param = null);
Run Code Online (Sandbox Code Playgroud)
设置代码很简单:
repository = new Mock<IRepository>();
Run Code Online (Sandbox Code Playgroud)
更新2
看起来这是Moq的一个问题,以及它如何处理.Net中的匿名类型.Paul Matovich发布的代码运行良好,但是,一旦代码和测试在不同的程序集中,测试就会失败.
moq ×1