gpt4 book ai didi

unit-testing - 在 Grails 3 单元测试中使用 Spock 数据驱动测试

转载 作者:行者123 更新时间:2023-12-02 15:51:12 24 4
gpt4 key购买 nike

我正在将在 Grails 2 中工作的一系列单元测试升级到 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:26 处的 groovy.lang.MissingPropertyException

当我执行测试时,因为测试执行没有填写测试中的错误、字段和 val 引用。如前所述,此测试适用于 Grails 2.5.5,因此我怀疑我缺少 Grails 3 中需要的东西。

编辑:我删除了我最初在 setup() 中的 mockForConstraints() 调用无效。

最佳答案

事实证明,使用的 ConstraintsTestSupport trait 是作为旧 Grails 2.x 项目中的一个类实现的,并且该类扩展了 spock.lang.Specification。当它被转换为特征时,它不再扩展支持数据驱动测试所需的基础 Spock 类。

该错误是在一个完全独立的模块中引入的,如果您将代码视为 Spock 测试,那就很明显了。

关于unit-testing - 在 Grails 3 单元测试中使用 Spock 数据驱动测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39216730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com