Спок: Создание высмеиваемых объектов во время выполнения

StackOverflow https://stackoverflow.com/questions/8846037

  •  27-10-2019
  •  | 
  •  

Вопрос

У меня есть класс Foo У этого есть метод Bar makeBar(String id). Анкет Как вы можете догадаться, makeBar Создает новый Bar объект с идентификатором id. Bar есть id.

Для целей моего теста мне нужно издеваться Foo. Анкет Я хотел бы насмехаться makeBar Метод создания издевательства Bar объекты, для которых Getter возвращает правильный id (тот, который был дан makeBar).


Итак, чтобы быть ясным, я хочу создать высмеивающий экземпляр foo из Foo так что

foo.makeBar(someId)

Возвращает издевательства Bar объект bar для которого

bar.getId() == someID

Есть ли способ сделать это со Споком, или я должен все заглушить?

Это было полезно?

Решение

Да, можно иметь фиктивное возвращение в другие макет. Это сделает свое дело:

Foo foo = Mock()

foo.makeBar(_) >> { String id ->
    Bar bar = Mock()
    bar.getId() >> id
    bar
}

Я опубликовал полный и запущенный код здесь: http://webconsole.spockframework.org/?id=40001.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top