簡體   English   中英

如何為grails 2.4中的特征編寫spock單元測試用例?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM