Не могу создать ложную связь в наследовании с помощью спока
Я новичок в споке. Я создал фиктивный объект в обычном классе, он отлично работает. Но когда у нас есть структура, подобная наследованию, как показано ниже, я не могу правильно смоделировать вещи, это дает ошибку (нулевой указатель). У любого есть идея, как мы можем сделать это в споке.
Class Parent{
Third getThird(){
return third;
}
}
Class Child extend Parent{
Object method1(){
String msg=getThird().someMethod(); // need to mock this line
return object;
}
}
given:
Third third=Mock()
Child child=new Child()
child.getThird(false) >> third
third.someMethod() >> "xyz"
when :
Object object=child.method1()
then:
//comparing the things
2 ответа
Вы можете смоделировать классы в Spock как любые интерфейсы:
given:
def thirdMock = Mock(Third) {
someMethod() >> "xyz"
}
def child = Mock(Child) {
third >> thirdMock
}
when :
def object = child.method1()
then:
//comparing the things
однако, это обычно признак кода, который на самом деле не поддается тестированию. в вашем случае вы, вероятно, должны сделать "третий" инъекционным, а затем ввести имитацию.
Вы можете попробовать это?
given:
def third = Mock(Third)
Child.metaClass.getThird = {
third
}
when :
Object object=child.method1()
then:
1 * thirdMocked.someMethod() >> "xyz"
and:
//comparing the things
cleanup:
Child.metaClass = null