Spring アプリケーションで Spock モック オブジェクトを使用する簡単な回避策を見つけました。ここで、basar Bean のモックを使用するための私の春の構成:
@Configuration @Profile("mocking")
class MockingContext {
@Bean Basar basar(){ new DelegatingBasar() }
}
class DelegatingBasar implements Basar {
@Delegate Basar delegate
}
そして、モックを作成して使用する単純な Spock 仕様を次に示します。
@Autowired
Basar basar
Basar basarMock
def setup() {
basarMock = Mock(Basar)
basar.delegate = basarMock;
}
def "create a new seller"(User seller) {
given:
basarMock.findAllUsers() >> []
when:
go "/static/sellers.html"
waitFor { $("#newUser") }
$("#newUser").click()
waitFor { $("#basarNumber") }
$("#basarNumber").value(seller.basarNumber)
$("#name").value(seller.name)
$("#lastname").value(seller.lastname)
$("#email").value(seller.email)
$("#saveUser").click()
waitFor { $("#successfullCreated") }
then:
1 * basarMock.saveUser({ newUser ->
newUser.basarNumber == seller.basarNumber
newUser.name == seller.name
newUser.lastname == seller.lastname
newUser.email == seller.email
})
where:
seller << [ new User(basarNumber: "100", name: "Christian", lastname: "", email: ""),
new User(basarNumber: "ABC", name: "", lastname: "", email: "")]
}