gpt4 book ai didi

c# - "Short circuiting"最小起订量无效方法?

转载 作者:IT王子 更新时间:2023-10-29 04:11:22 24 4
gpt4 key购买 nike

我的团队最近决定使用 Moq 作为我们的模拟框架,因为它具有极大的灵 active 和高度可读的语法。由于我们是新手,我遇到了看似简单的问题——搜索(此处,谷歌等)发现大量关于最小起订量其他细微差别的讨论,但不一定是我所追求的,并且几个看似相关的问题变成了转移注意力的问题。

我们正在测试一个具有外部依赖性(准确地说是 Amazon SimpleDb)的类,但不希望我们的测试绑定(bind)到实时连接。具体方法:

  • 应用一些“业务”逻辑
  • 如果合适,通过我们构建的提供程序调用 SDB,我们称之为 SaveItem()

我想对此进行单元测试,以便我们设置所需的上下文并确保 SaveItem() 被调用,但以 SaveItem() 确实未调用的方式' t 调用(因为 A)SDB 的提供者是一个没有完全水合的模拟,可能会爆炸,B)我不想为该交易支付成百上千次的费用)。

在处理返回值的方法时,这是微不足道的。

mockDb.Setup(d => d.GiveMeSomething()).Returns("Foo");

但在我上面概述的情况下,我的“SaveItem()”方法无效,因此使用 Moq 的 Returns() 方法的选项不可用.虽然我可以设置一个回调来验证 SaveItem() 是否被调用,但我似乎无法让它实际上不做任何事情。

天真/满怀希望,我认为下面的方法会起作用,但它似乎仍在调用该方法:

mockDb.Setup(d => d.SaveItem(It.IsAny<object>()));

那么百万美元的问题:以下虚构代码的最小起订量是多少?

mockDb.Setup(d => d.SaveItem(It.IsAny<object>())).STOP_RIGHT_HERE();

最佳答案

如果 SaveItem() 方法是虚拟的或抽象的,并且您没有设置 Callbase = true,则应该重新实现该方法以不执行任何操作模拟。

你应该能够做到:

mockDb.Setup(d => d.SaveItem(It.IsAny<object>())).Verifiable();

... test here ...

mockDb.Verify();

关于c# - "Short circuiting"最小起订量无效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1203529/

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