Ложное поведение родительского класса (защищенный метод) при тестировании дочернего класса - PullRequest
0 голосов
/ 23 октября 2018

Я использую Спок для проекта модульного тестирования, к которому я только что присоединился.Однако существует проблема с написанием тестов для кода 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 ().

1 Ответ

0 голосов
/ 23 октября 2018

Будет ли это работать следующим образом:

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;}

void и return?;)

...