2012-01-13 4 views
1

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

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


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

foo.makeBar(someId) 

возвращает высмеивал Bar объект bar, для которых

bar.getId() == someID 

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

ответ

4

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

Foo foo = Mock() 

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

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

+0

Спасибо! Это экономит мне более 100 строк: –

Смежные вопросы