gpt4 book ai didi

unit-testing - Moq - 如何验证 Action

转载 作者:行者123 更新时间:2023-12-05 06:43:16 25 4
gpt4 key购买 nike

我的测试单元中有以下代码:

transaction.QueueCommand(x => x.AddItemToSet("key", "value"));

我想验证这是使用 Moq 调用的(我喜欢 Moq)。

我在单元测试中设置了以下验证:

m_MockTransaction.Verify(x => x.QueueCommand(y => y.AddItemToSet("key", "value")));

不幸的是,这给出了以下异常:

Exception thrown: 'System.NotSupportedException' in Moq.dll

Additional information: Unsupported expression: y => y.AddItemToSet("key","value")

我理解这是因为 Moq 无法打开代理来确定调用是否匹配。我想知道是否有人有解决此限制的方法,最好不要太讨厌。

我看过这个答案https://stackoverflow.com/a/1120836/282090建议将 Func 转换为字符串,然后进行比较(这不适用于 Action。不幸的是,我测试中的代码与我的被测单元中的代码不同。

例如,我会验证“键”、“值”,而代码可能会传递变量 theKey、theValue。

如能提供任何帮助确保我可以验证通话,我们将不胜感激。

最佳答案

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

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

关于unit-testing - Moq - 如何验证 Action<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33947975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com