gpt4 book ai didi

unit-testing - 具有派生属性的域类的Grails3单元测试

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

我使用derived property lowercaseTag拥有以下Domain类。

class Hashtag {
String tag
String lowercaseTag

static mapping = {
lowercaseTag formula: 'lower(tag)'
}
}

如果我运行以下单元测试,它将在最后一行失败,因为 lowercaseTag属性是 null,默认情况下,所有属性都具有 nullable: false约束。
@TestFor(Hashtag)
class HashtagSpec extends Specification {
void "Test that hashtag can not be null"() {
when: 'the hashtag is null'
def p = new Hashtag(tag: null)

then: 'validation should fail'
!p.validate()

when: 'the hashtag is not null'
p = new Hashtag(tag: 'notNullHashtag')

then: 'validation should pass'
p.validate()
}
}

问题是在这种情况下如何正确编写单元测试?谢谢!

最佳答案

正如我确定的那样,由于数据库依赖lowercaseTag,因此无法对其进行测试。 Grails单元测试不使用数据库,因此不评估公式/表达式。

我认为最好的选择是修改约束,以便lowercaseTag可为空。

class Hashtag {
String tag
String lowercaseTag

static mapping = {
lowercaseTag formula: 'lower(tag)'
}

static constraints = {
lowercaseTag nullable: true
}
}

否则,您将不得不修改测试以强制 lowercaseTag包含一些值,以便 validate()起作用。
p = new Hashtag(tag: 'notNullHashtag', lowercaseTag: 'foo')

关于unit-testing - 具有派生属性的域类的Grails3单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34945824/

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