Integration with Spock Framework
Spock Framework is a developer testing and specification framework for Java and Groovy applications.
Sniffy can be integrated with Spock Framework using Spy
field and standard spock then
block:
package io.sniffy.test.spock.usage
import groovy.sql.Sql
import io.sniffy.Sniffy
import io.sniffy.sql.SqlQueries
import io.sniffy.sql.WrongNumberOfQueriesError
import spock.lang.FailsWith
import spock.lang.Shared
import spock.lang.Specification
class SpockUsageSpec extends Specification {
@Shared sql = Sql.newInstance("sniffy:jdbc:h2:mem:", "sa", "sa")
def spy = Sniffy.spy()
@FailsWith(WrongNumberOfQueriesError)
"Execute single query - negative"() {
when:
sql.execute("SELECT 1 FROM DUAL")
sql.execute("SELECT 1 FROM DUAL")
then:
spy.verify(SqlQueries.exactQueries(1))
}
def "Execute single query"() {
when:
sql.execute("SELECT 1 FROM DUAL")
then:
spy.verify(SqlQueries.exactQueries(1)).reset()
when:
sql.execute("SELECT 1 FROM DUAL")
then:
spy.verify(SqlQueries.exactQueries(1))
}
def "Execute single query - another one"() {
when:
sql.execute("SELECT 1 FROM DUAL")
then:
spy.verify(SqlQueries.exactQueries(1))
}
}
Do not forget to call reset()
method on the spy object if you have multiple when-then blocks in a single test method