【发布时间】:2016-03-01 02:24:40
【问题描述】:
我的测试单元中有以下代码:
transaction.QueueCommand(x => x.AddItemToSet("key", "value"));
我想验证这是使用 Moq 调用的(我喜欢 Moq)。
我在单元测试中设置了以下验证:
m_MockTransaction.Verify(x => x.QueueCommand(y => y.AddItemToSet("key", "value")));
不幸的是,这给出了以下异常:
抛出异常:Moq.dll 中的“System.NotSupportedException”
附加信息:不支持的表达式:y => y.AddItemToSet("key", “价值”)
我理解这是因为 Moq 无法打开委托来确定调用是否匹配。 我想知道是否有人有解决此限制的方法,最好不要太讨厌。
我已经看到了这个答案https://stackoverflow.com/a/1120836/282090,它建议将 Func 转换为字符串,然后可以进行比较(这不适用于 Action。不幸的是,我测试中的代码与我的单元中的代码不同测试。
例如,我会对“key”、“value”进行验证,而代码可能会传递变量 theKey、theValue。
非常感谢任何能帮助我验证电话的帮助。
【问题讨论】:
-
您要测试的代码是什么样的?你能发布更多而不是一行吗?
标签: unit-testing tdd moq