gpt4 book ai didi

grails - 如何使用 Spock 和 Grails 2 模拟服务方法的接口(interface)参数?

转载 作者:行者123 更新时间:2023-12-02 14:29:37 24 4
gpt4 key购买 nike

给定类似的东西:

@TestFor(MyService)
@Mock(SomeClass)
class WhateverSpec extends Specification {
def 'Test a mock'() {
given:
def someObject = new SomeClass(name: 'hello')
assert someObject.name == 'hello'

when:
def result = service.doSomething(someObject)

then:
result == 'nice'
}
}

给定 doSomething()被定义为:
String doSomething(SomeClass thing) {
// ...
return 'nice'
}

应该没有问题。但是如果 doSomething 中的参数呢?是 接口(interface) ? String doSomething(SomeInterface thing) .在不直接创建新的 SomeClass 的情况下,我将如何在测试中制作模拟对象(就像我不应该假设它将是哪种对象,但该对象肯定会实现接口(interface))。

最佳答案

您可以使用规范中的 Mock/Stub/Spy 方法(取决于您的需要)

def mokedInterface = Mock(MyInterface)

这是一个模拟 List 接口(interface)的例子:
def 'should mock List interface size method'() {
given:
def mockedList = Mock(List)
def expectedListSize = 2
mockedList.size() >> expectedListSize
when:
def currentSize = mockedList.size()
then:
currentSize == expectedListSize
}

关于grails - 如何使用 Spock 和 Grails 2 模拟服务方法的接口(interface)参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44251595/

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