我正在测试 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
最佳答案
不过,我可以使用我自己的域通过您的测试。我的假设是您的域中可能有其他字段导致保存
失败。我的建议是使用 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 中,如何测试具有关联的 where 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24573710/