gpt4 book ai didi

unit-testing - 在grails中,如何测试具有关联的查询?

转载 作者:行者123 更新时间:2023-12-02 14:01:42 25 4
gpt4 key购买 nike

我想测试where query,但它总是返回一个空列表。如果我删除了owner.name == "Jane",查询将返回一些内容,但是当我放回它时,它将不再返回任何内容。 where查询肯定可以与test-app上的基本模型搜索一起使用,但是我不确定在包含关联时是否可以使用。它虽然可以在run-app上正常运行,但似乎在test-app上失败。难道我做错了什么?我需要 mock 吗?我正在使用grails 2.3.9和spock。注意:我正在做单元测试。

 Owner owner = Owner.build(name: "Jane")
Pet expectedPet = Pet.build(breed: "Random dog", owner:owner)

when:
def pets = Pet.where {
breed == "Random dog" && owner.name == "Jane"
}.list()

then:
pets.size() == 1

最佳答案

但是,我可以通过自己的域通过您的测试。我的假设是您的域中可能还有其他字段导致save失败。我的建议是使用buildWithoutSave并将其与failOnError:true一起保存以进一步调试它。

希望能帮助到你

//规格:

import grails.buildtestdata.mixin.Build
import spock.lang.Specification

@Build([Owner, Pet])
class OwnerSpec extends Specification {

def setup() {
}

def cleanup() {
}

void "test something"() {
setup:

//Owner owner = Owner.build(name: "Jane")
//Pet expectedPet = Pet.build(breed: "Random dog", owner: owner)

Owner owner = Owner.buildWithoutSave(name: "Jane")
owner.save(failOnError: true)

Pet expectedPet = Pet.buildWithoutSave(breed: "Random dog", owner: owner)
expectedPet.save(failOnError: true)

when:
def pets = Pet.where {
breed == "Random dog" && owner.name == "Jane"
}.list()

then:
pets.size() == 1
}
}

//域
class Pet {

String breed
testsave.Owner owner

static constraints = {
}
}

class Owner {
String name

static constraints = {
}
}

关于unit-testing - 在grails中,如何测试具有关联的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24573710/

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