gpt4 book ai didi

unit-testing - 如何为 grails 2.4 中的特征编写 spock 单元测试用例?

转载 作者:行者123 更新时间:2023-12-04 11:37:07 25 4
gpt4 key购买 nike

我正在使用 Traits 使我的 Controller 干燥。我想使用 Spock 对 Trait 类进行单元测试。这是我的样本特征和Spock测试用例:

trait SomeTrait {
public void checkSomething (Closure c ){
// Do some operation
c.call
}
}

@TestMixin(GrailsUnitTestMixin)
class SomeTraitSpec extends Specification {
void "test checkSomething "(){
setup:
MockedClass mockedObj = new MockedClass()
def x=0
def c = {
x=1
}

when:
mockedObj.checkSomething(c)

then:
assert x==1
}
}
class MockedClass implements PermissionTrait {
// some thing
}

由于 trait 是一个接口(interface),我的测试用例中有一个 Mocked 类,它实现了 Trait,我创建了这个 Mocked 类的对象并调用我想要测试的 Trait 方法。这是正确的方法吗,如果不是,请用一个恰当的例子指出正确的方向。

最佳答案

Groovy 的类型强制可用于在运行时将行为从特征添加到类。

class MyTraitSpec extends Specification
{
@Shared
MyTrait testInstance = new Object() as MyTrait

// ...
}

您应该知道这会创建一个代理实例,尽管文档( http://docs.groovy-lang.org/docs/groovy-2.3.0/html/documentation/core-traits.html#_runtime_implementation_of_traits)说代理保证实现特征和任何/所有接口(interface),如果您检查对象的具体类型,这可能会导致问题.

关于unit-testing - 如何为 grails 2.4 中的特征编写 spock 单元测试用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27793674/

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