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에 따라 "Testing Constraints"를 찾으십시오. 결론은 Grails 3에서 더 이상 사용할 수 없다. – dmahapatro
나는이 섹션을 읽고 다른 테스트 케이스에서 제거했다. 불행히도 나는 여전히 다른 테스트 케이스를 붙여서 질문에 붙여 넣는다. 아무리해도 mockForConstraintsTests를 제거해도 아무런 효과가 없다. 새로운 ContactPhoneNumber 행에서 MissingPropertyException으로 실패합니다. val은 정의되지 않았습니다. 데이터 기반 테스트를 사용하는 데 필요한 다른 것을 놓치고 있습니다. –