Спок: создание поддельных объектов во время выполнения - PullRequest
1 голос
/ 13 января 2012

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

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


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

foo.makeBar(someId)

возвращает поддельный Bar объект bar, для которого

bar.getId() == someID

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

1 Ответ

4 голосов
/ 13 января 2012

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

Foo foo = Mock()

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

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

...