【发布时间】:2017-10-04 05:52:56
【问题描述】:
getProperty('name') 和 getName() 之间的模拟实例有什么区别?我以为它们的意思是一样的,但我一直不得不在它们之间交换,因为有时 spock 对其中一个不满意。
假设我有以下课程
class Person {
String name
}
我正在测试其他一些旨在更新该人的类,所以我做了这样的事情:
void "test something"() {
Person personMock = Mock(Person)
when:
someObject.updatePersonName(personMock, 'new name')
then:
1 * personMock.getName() >> 'old name'
1 * personMock.setName('new name')
}
简化测试的细节并不重要。关键是我正在验证某个属性是否正在被读取和更新。有时,当我运行测试时,我会抱怨 personMock.getName() 从未被调用过,这有助于表明 personMock.getProperty('name') 被调用了。如果我重写它以使用该表单,则测试通过。直到一段时间后,它再次抱怨 getProperty('name') 没有被调用,但 getName() 被调用了。
我知道斯波克不可能这么脆弱。我一定是在什么地方摸索了。那么什么时候应该使用 getName() 以及什么时候使用 getProperty('name')?
【问题讨论】:
标签: unit-testing spock