Ich habe einen seltsamen Anwendungsfall, in dem Spock Mock den richtigen Wert zurückgibt, wenn ich im Abschnitt "then:" nicht nach zwei Aufrufen der gespielten Klasse suche, aber 0 zurückgibt, wenn ich Fügen Sie im Abschnitt "then:" zwei Überprüfungen hinzu. Dies ist das Mock:Spock Mock gibt falschen Wert zurück
mockDao.readCounter(_, _, _, _, _) >> dbValue
und hier ist der 'dann:' Abschnitt, den fehlschlägt:
1 * mockDao.readCounter(_, _, _, _, _)
// updateCounters is called with: sum = dbValue + value
1 * mockDao.updateCounter(namespace, date, key, min, shardID, dbValue + value)
In diesem Fall statt 'dbValue', '0' zurückgegeben. Aber wenn ich einen der beiden Checks auszeichne, vergeht es. So gehen die beiden folgenden Fällen:
//1 * mockDao.readCounter(_, _, _, _, _)
// updateCounters is called with: sum = dbValue + value
1 * mockDao.updateCounter(namespace, date, key, min, shardID, dbValue + value)
OR
1 * mockDao.readCounter(_, _, _, _, _)
// updateCounters is called with: sum = dbValue + value
//1 * mockDao.updateCounter(namespace, date, key, min, shardID, dbValue + value)
Hier ist der gradle Abschnitt für spock:
// spock
testCompile "org.codehaus.groovy:groovy:2.4.7"
compile group: 'org.spockframework', name: 'spock-core', version: '1.0-groovy-2.4'
// !!! To get none-interface base mocking to work with Spock
compile group: 'cglib', name: 'cglib-nodep', version: '3.2.4'