gpt4 book ai didi

unit-testing - Grails:在另一个服务中模拟一个服务及其方法

转载 作者:行者123 更新时间:2023-12-02 15:00:31 24 4
gpt4 key购买 nike

我有以下服务:

class MyMainService {

def anotherService;

def method1("data") {
def response = anotherService.send("data")
}

}

anotherService 是在 grails resources.groovy 中定义的 bean

我想通过模拟 对 MyMainService 中的 method1 进行单元测试anotherService.send("数据")

我如何模拟 另一个服务 bean 及其返回值为 发送() 方法并注入(inject)我的 MyMainServiceSpec 测试类?

我正在使用 grails 2.3.8。

谢谢。

最佳答案

您可以使用 grails 中内置的默认模拟框架或选择使用 Spock 框架模拟样式。我更喜欢 Spock 框架,但选择权在你。这是一个如何使用单元规范中可用的 grails mockFor 方法的示例。

使用默认的 grails 模拟测试 MyMainService。

@TestFor(MyMainService)
class MyMainServiceSpec extends Specification {

@Unroll("method1(String) where String = #pData")
def "method1(String)"() {
given: "a mocked anotherService"
def expectedResponse = [:] // put in whatever you expect the response object to be

def mockAnotherService = mockFor(AnotherService)
mockAnotherService.demand.send { String data ->
assert data == pData
return expectedResponse // not clear what a response object is - but you can return one.
}
service.anotherService = mockAnotherService.createMock() // assign your mocked Service

when:
def response = service.method1(pData)

then:
response
response == expectedResponse

where:
pData << ["string one", "string two"]
}
}

关于unit-testing - Grails:在另一个服务中模拟一个服务及其方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25983188/

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