Ich habe ein Problem mit der Liste der gewünschten Objekte von Spock Groovy verspottet Schnittstelle Rückkehr:Wie Liste zurückzukehren für mock in groovy spock Test
public interface SomeRepository {
List<SomeObject> getAll();
}
Deshalb möchte ich, dass verspotten in Klasse:
@CompileStatic
class SomeProcessor {
private final SomeRepository repository
SomeProcessor(SomeRepository repository) {
this.repository = repository
}
List<SomeObject> getAll() {
return repository.all
}
}
Und ich habe diesen Test:
class SomeProcessorSpec extends Specification {
private final SomeRepository repository = Mock(SomeRepository)
@Subject private final SomeProcessor processor = new SomeProcessor(repository)
def 'should collect items from repository'() {
given:
List<SomeObject> expected = [new SomeObject(), new SomeObject()]
repository.all >> expected
when:
List<SomeObject> actual = processor.all
then:
assertEquals(expected, actual)
}
}
Wenn ich versuche, diesen Test ich eine Assertion Fehler angezeigt auszuführen:
junit.framework.AssertionFailedError: Expected :[[email protected], [email protected]] Actual :null
So bedeutet es, dass aus repository.all
Methode zurückgegeben es null
und nicht meine erwartete Liste, die ich ist verwirrend. Und die Frage ist: Wie kann man tatsächlich eine Liste von verspotteten Instanzen zurückgeben, wenn man mit spock und groovy testet?
'repository.all >> erwartet 'sieht aus wie Entfernung für mich. versuch es mit 'repository.all = new ArrayList (expected)' – injecteer
zu ersetzen Ich habe deinen Code 1: 1 getestet, das einzige, was ich geändert habe, ist 'Object' anstelle von' SomeObject' und es funktioniert genauso, wie du es erwartest Arbeit. Ich habe es mit Spock 1.0-groovy-2.4 und 1.1-groovy-2.4 versucht und beide haben gut funktioniert. – Vampire
Btw, ist dieser genaue Code, der nicht für Sie arbeitet oder ein kurzes PoC, das versucht, Ihr Problem zu widerspiegeln? Vielleicht haben Sie ein ähnliches Problem - https://github.com/kiview/spring-spock-mock-beans-demo/issues/1? –