У меня есть странный случай использования, когда spock mock возвращает правильное значение, когда я не проверяю два вызова на классный класс в разделе «then:», но он возвращает 0, когда я включите две проверки в разделе «then:». Это насмешка:Spock mock возвращает неправильное значение
mockDao.readCounter(_, _, _, _, _) >> dbValue
и здесь есть 'то:' секция, которая не:
1 * mockDao.readCounter(_, _, _, _, _)
// updateCounters is called with: sum = dbValue + value
1 * mockDao.updateCounter(namespace, date, key, min, shardID, dbValue + value)
В этом случае вместо 'dbValue', '0' возвращается. Но если я прокомментирую одну из двух проверок, она пройдет. Таким образом, следующие два случая проходит:
//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)
Вот Gradle раздел Спка:
// 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'