Grails 2でGrails 3を動作させる一連のユニットテストをアップグレードし、Spockデータ駆動テストフォーマットを使用してテストを駆動するドメインテストに問題があります。Grails 3ユニットテストでSpockデータ駆動テストを使用する
import grails.test.mixin.TestFor
import grails.test.mixin.TestMixin
import grails.test.mixin.support.GrailsUnitTestMixin
import spock.lang.Unroll
import com.spiekerpoint.ark.test.ConstraintsTestSupport
/**
* Unit test for domain class ContactPhoneNumber.
*/
@TestFor(ContactPhoneNumber)
class ContactPhoneNumberSpec implements ConstraintsTestSupport {
def setup() {
}
def cleanup() {
}
@Unroll
void "test ContactPhoneNumber type constraints"() {
when:
ContactPhoneNumber obj = new ContactPhoneNumber("$field": val)
then:
validateConstraints(obj, field, error)
where:
error | field | val
'valid' | 'type' | 'HOME'
'valid' | 'type' | 'MOBILE'
'valid' | 'type' | 'WORK'
'valid' | 'type' | 'PAGER'
'valid' | 'type' | 'FAX'
}
}
私はContactPhoneNumberSpec.groovyで groovy.lang.MissingPropertyExceptionを取得しています:26
テスト実行、テスト中のエラー、フィールドとval参考文献に充填されていないので、私はテストを実行したとき。前述のように、このテストはGrails 2.5.5で動作するので、Grails 3に必要なものがないと思われます。
編集:私が元々setup()で持っていたmockForConstraints無効。
http://docs.grails.org/latest/guide/testing.htmlに従ってください。「テスト制約」を参照してください。ボトムライン 'mockForConstraintsTest'はもはやGrails 3では利用できません。 – dmahapatro
私はそのセクションを読んで、別のテストケースからそれを削除しました。残念ながら、別のテストケースを選択して、それをまだ残しておきます。それに関係なく、mockForConstraintsTestsを削除しても何も起こりません。新しいContactPhoneNumber行のMissingPropertyExceptionで失敗します。valは未定義です。私はそれがデータ駆動型のテストを使用する必要がある何かが欠けている。 –