У меня проблема с созданием тестовых данных с помощью спока фреймворка.Чтобы следовать «композиции через наследование», у меня есть класс для создания тестовых данных для моих модульных тестов.В простой форме это выглядит так:
class TestData extends Specification{
Foo createFoo(){
GroovyMock(Foo){
doSomething() >> "MOCKED!"
}
}
}
Когда я пишу тест, мне нравится тестировать, если и как часто метод вызывался.Вот так
def "simple test"(){
given:
TestData testData = new TestData()
Foo foo = testData.createFoo()
when:
println foo.doSomething()
then:
1 * foo.doSomething()
}
Я знаю, этот тест не имеет смысла.Это просто для иллюстрации поведения.
Я бы ожидал "зеленый результат" этого теста, так как doSomething () был вызван 1 раз.Но результат теста красный:
Too few invocations for:
1 * foo.doSomething() (0 invocations)
[...]
Когда я издеваюсь над Foo напрямую, все работает отлично:
def "simple test"(){
given:
Foo foo = GroovyMock(Foo){
doSomething() >> "MOCKED!"
}
when:
println foo.doSomething()
then:
1 * foo.doSomething()
}
У кого-нибудь есть идеи, как с этим справиться, не выводя мой тестовый класс из TestData?
Кстати.Я использовал заглушку, возвращающую "MOCKED!"чтобы показать, макет работает.Но это не «перезаписано» или как там это называется, когда testData создал макет.