[英]How to write a spock unit test case for traits in grails 2.4?
我正在使用Traits來制作我的控制器DRY。 我想使用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是一個接口,我在我的測試用例中有一個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 )表示代理保證實現trait和any / all接口,如果你檢查對象的具體類型,這可能會導致問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.