8

コントローラーを 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 メソッドを呼び出します。これは正しいアプローチですか。そうでない場合は、適切な例で正しい方向を示してください。

4

1 に答える 1