'then:'セクションの2つのコールをチェックしないと、spockモックが正しい値を返すという奇妙な使用例があります。 'then:'セクションに2つの小切手を入れてください。 は、これはモックです:失敗したセクション:Spockモックが間違った値を返す
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' が返されます。しかし、私が2つの小切手のいずれかをコメントアウトすると、それは合格となります。だから、次の2つのケースが合格:
//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'