测试子类时模拟父类行为(受保护方法)



我正在使用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(("方法时收到"调用太少"错误。

它会这样工作吗:

def 'test'() {
given:
SomeObject obj = Mock()
Child child = new Child()
child.setSomeObject(obj)
when:
child.doSth()
then:
1 * obj.dosomethingontheobject() >> [somethin1, somethin2]
}

也:

public void getSomeObject() {return obj;}

voidreturn? ;)

最新更新