我有以下spock测试
def "setXandSave saves the parcel with the chosen xValue"() {
given:
jpaRepository.findOne(parcelId) >> parcel
when:
repository.setXandSave(parcelId, xValue)
then:
1 * parcel.setX(xValue)
1 * jpaRepository.save(parcel)
where:
parcelId | parcel | xValue
10L | Mock(ParcelEntity.class) | "a"
20L | Mock(ParcelEntity.class) | "B"
}
我在第1 * parcel.setX(xValue)
行收到错误“调用:......的次数太少。”
我做错了什么或者这是Spock的限制?我在运行测试时调试了setXandSave
方法,确实调用了setX
。
但斯波克说。
Unmatched invocations (ordered by similarity):
None
有关如何调试问题的任何帮助也表示赞赏。
答案 0 :(得分:1)
在您的案例中,我没有理由让where
阻止此处。第二列有重复,可以从表中提取。同样从测试的角度来看,输入10 /' a'和' 20' B'对。因此,我们可以将您的测试简化为:
def "setXandSave saves the parcel with the chosen xValue"() {
given:
def parcelId = 10L
def xValue = 'a'
and:
def parcel = Mock(ParcelEntity)
jpaRepository.findOne(parcelId) >> parcel
when:
repository.setXandSave(parcelId, xValue)
then:
1 * parcel.setX(xValue)
1 * jpaRepository.save(parcel)
}