grails install-plugin spock 0.6-SNAPSHOT
修改 grails-app/conf/BuildConfig.groovy
grails.project.dependency.resolution = {
plugins {
//增加以下
test ":spock:0.6-SNAPSHOT"
}
}
接著建立一個 Unit Test:
grails create-unit-test Book
新檔案內容大概是:
import spock.lang.*
import grails.plugin.spock.*
class BookSpec extends UnitSpec {
def "feature method"() {
}
}
grails test-app
The return type of java.lang.Object mockDomain(java.lang.Class, java.util.List) in BookSpec is incompatible with void mockDomain(java.lang.Class, java.util.List) in grails.plugin.spock.UnitSpec
必須手動將 Test Class 修改以下。
import spock.lang.*
import grails.plugin.spock.*
import grails.test.mixin.*
@Mock(Book)
class BookSpec extends Specification {
def "book test"() {
setup:
when:
new Book(name: name).save()
then:
Book.findByName(name) != null
where:
name = 'title1'
}
}
主要差異是必須用 Specification (Spock 的標準寫法) 取代舊版 Grails spock 的 UnitSpec,並且用 @Mock 的 annotation 取代 mockDomain() 的舊方法。
如此一來,便可以用語意更加清晰的 Spock Specification 取代 JUnit 風格的 Test Case 寫法。
Happy Grails !!!
Happy Grails !!!
沒有留言:
張貼留言