相关疑难解决方法(0)

使用Moq可以验证匿名类型的方法调用吗?

我正在尝试使用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

15
推荐指数
3
解决办法
3016
查看次数

标签 统计

moq ×1