【问题标题】:Moq - How to verify Action<T>?Moq - 如何验证 Action<T>?
【发布时间】: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


【解决方案1】:

在这种情况下,我发现弄清楚如何做 Moq 团队没有完成的事情是不值得的,而是将此单元测试转变为集成测试,验证数据库中的数据是否正确。

如果有人有更好的解决方案,我可以改变它。

【讨论】:

    猜你喜欢
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 2021-08-25
    • 2014-07-24
    • 2021-12-04
    • 2013-01-01
    • 1970-01-01
    相关资源
    最近更新 更多