当前位置: 首页 > 知识库问答 >
问题:

我如何才能有效地模拟一个流畅的界面与Spock Mocks?

孟征
2023-03-14

我想用mock模拟一些流畅的界面,它基本上是一个邮件构建器:

this.builder()
            .from(from)
            .to(to)
            .cc(cc)
            .bcc(bcc)
            .template(templateId, templateParameter)
            .send();

当用Spock嘲笑这一点时,这需要像这样的设置:

def builder = Mock(Builder)
builder.from(_) >> builder
builder.to(_) >> builder 

或者类似于Mockito的Deep Stubs(见http://docs.mockito.googlecode.com/hg/org/mockito/mockito.html#returns_deep_stubs)

共有1个答案

通典
2023-03-14

您可以这样做:

def "stubbing and mocking a builder"() {
    def builder = Mock(Builder)
    // could also put this into a setup method
    builder./from|to|cc|bcc|template|send/(*_) >> builder

    when:
    // exercise code that uses builder

    then:
    // interactions in then-block override any other interactions
    // note that you have to repeat the stubbing
    1 * builder.to("fred") >> builder
}
 类似资料:
  • 我目前正在进行一个停车地点模拟。在进入停车地点之前,一辆汽车要越过一个边界。为了模拟这一点,我添加了一个“CarMoveTobOrder”块,在这个块中,汽车会移动到一个停车处。然后我添加了一个服务块来模拟BorderService提供服务的时间。现在我有了一个汽车网络,我真的不知道如何在服务块内指定延迟或队列的位置。我尝试通过输入stopLine的名称来指定延迟的位置,但我得到一条错误消息:Ty

  • 问题内容: 我对设计模式非常陌生,并且对流利的界面和Builder模式之间的差异感到困惑。 我了解流畅接口的概念。但是构建器模式有点混乱。我无法理解在Builder模式中对Director的使用。 我可以同时使用Builder模式和Fluent接口吗?如果是这样,那么我应该如何与主任和具体的建设者一起这样做? 我的问题 不是 关于构建器模式的优势。但是这个问题的目的是要了解构建器模式和流畅接口之间

  • 问题内容: 我使用,并且需要模拟其行为。由于不可能直接模拟,因此我创建了一个接口 Clock.java JodaTime.java 这是我要测试的方法 如您所见,依赖于当前时间相对于[4 PM-7PM] EST时间间隔和托运人名称的时间。由于Shipper将通过参数传递,因此我们可以对其进行单元测试。但是我需要嘲笑时间。所以这是我尝试的 自从我在下午6点通过考试以来,该测试应该会失败,但这是下午4

  • 问题内容: 我在想类似的东西: 哪种Java JSON库最适合这种流畅的构建? 更新 :我包GSON,并得到几乎理想的结果...... 问题答案: 我正在使用org.json库,发现它很好并且很友好。 例: 输出:

  • 我如何让这个代码有圆角?那有可能吗?也将只有第一个

  • 问题内容: 在以下示例中,将显示初始图标,但在类更改时它不会更改。 问题答案: BO41是正确的,它是字体真棒的javascript,不会重新渲染。如果您可以不使用新的font-awesome svg / javascript图标,可以将font-awesome用作css的网络字体。 在index.html中,删除fontawesome脚本,然后添加font-awesome css样式表: 您的代