gpt4 book ai didi

Grails 3 单元测试 : How do you do mockFor, createMock,以及 Grails 3 中的需求?

转载 作者:行者123 更新时间:2023-12-04 13:26:35 27 4
gpt4 key购买 nike

我正在将应用程序从 Grails 2.4.4 升级到 Grails 3.0.9,但我找不到有关如何在 Grails 3 中执行 mockFor、createMock 和需求的任何信息。

我曾经做过这样的事情:

fooService = mockFor(FooService)
controller.fooService = fooService.createMock()

fooService.demand.barMethod() { a,b ->
}

但看起来 'mockFor' 已经消失了,即使从文档中也是如此。 Grails 3 的方法是什么?

更新:

我不想将使用 Grails 'mockFor' 风格编写的数千个测试重写为 Spock 风格的交互,所以我想出了这个解决方案:
  • 用新的 MockFor() 替换 mockFor()
  • 用 proxyInstance() 替换 createMock()
  • 将对 fooBean.fooService = fooService.proxyInstance() 的调用移动到需求之后

  • 没有进一步的更改,这在 Grails 3 中“正常工作”。

    最佳答案

    您可以使用 Spock默认情况下:

    @TestFor(MyController)
    class MyControllerSpec extends Specification {

    void "test if mocking works"() {
    given:
    def fooService = Mock(FooService)
    fooService.barMethod(_, _) >> {a, b ->
    return a - b
    }

    when:
    def result = fooService.barMethod(5, 4)

    then:
    result == 1
    }
    }

    class FooService {
    int barMethod(int a, int b) {
    return a + b;
    }
    }

    关于Grails 3 单元测试 : How do you do mockFor, createMock,以及 Grails 3 中的需求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33905437/

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