Как написать Spock Unit Test, высмеивая объект и ожидая некоторый ожидаемый результат - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь написать модульный тест для сложения 2 чисел, который вызывает метод add класса () класса обслуживания, и есть еще один класс HelperAdd, который вызывается из метода add ()

Здесь, в случае модульного теста, мой ожидаемый результат отличается от того, что жестко закодировано в классе модульного теста. Как это решить. Я делаю что-то не так в коде.

Класс модульных испытаний--

class ControllerTest extends Specification {

Service src
HelperAdd hd

def setup() {
    hd = Mock()

    src = new Service(
            hd: hd
    )
}

    def "Add 2 numbers"() {
        AddModel request = new AddModel()

    given: "input"
    request.setA(2)
    request.setB(3)
    when:
    src.add(request)
    then:
    1 * hd.add(_) >> 2
    expect:"4"
    }
}


Service class --

class Service {

    @Autowired
    HelperAdd hd

    @PostMapping(value="/getdocuments")
    def add(@RequestBody AddModel request) {
        int a = request.a
        int b = request.b
        int d = hd.add(a)
        int c = a+d
        return c
    }
}


HelperAdd class--

class HelperAdd {

    def add(int a)
    {
        int k = a+4
        return k
    }

}

Model class --

@Canonical
class AddModel {

    int a
    int b

}

1 Ответ

0 голосов
/ 09 мая 2018

Я не понимаю вашей проблемы. Тест проходит. Хотя ваш синтаксис теста странный. Как насчет этого?

def "Add 2 numbers"() {
  given: "input"
  def request = new AddModel(a: 2, b: 3)
  when:
  def result = src.add(request)
  then:
  1 * hd.add(_) >> 2
  result == 4
}
...