【发布时间】:2018-10-23 14:01:05
【问题描述】:
我正在使用 Spock 对我刚刚加入的项目进行单元测试。然而,为 Java 代码编写测试存在问题。
class Parent {
private SomeObject obj;
public SomeObject getSomeObject() {return obj;}
public void setSomeObject(final SomeObject obj) {this.obj = obj}
}
// THIS IS THE CLASS I AM TESTING
class Child extends Parent {
public String doSth() {
getSomeObject().dosomethingontheobject() // This line causes problem
}
}
这是我正在使用的测试方法
def 'test'() {
given:
SomeObject obj = Mock()
obj.dosomethingontheobject() >> [somethin1, somethin2]
Child child = new Child()
child.setSomeObject(obj)
when:
child.doSth()
then:
1 * obj.dosomethingontheobject()
}
运行时,调用“dosomethingonobject()”方法时出现“调用太少”错误。
【问题讨论】:
-
你能发帖minimal reproducible example吗?我试图重现您的问题 -
Parent、Child和SomeObject作为 Java 类,Spock 测试复制粘贴(somethin1和somethin2替换为一些随机字符串)并按预期通过测试。跨度>
标签: unit-testing testing groovy spock