コントローラーを DRY にするために Traits を使用しています。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 はインターフェースであるため、テスト ケースに Trait を実装する Mocked クラスがあり、この Mocked クラスのオブジェクトを作成し、テストしたい Trait メソッドを呼び出します。これは正しいアプローチですか。そうでない場合は、適切な例で正しい方向を示してください。