我有这个Bean,它在我尝试测试的另一个Bean内的某个地方使用。但是我无法模拟该方法调用,因为它总是说_是未知属性。
@TestConfiguration
class IntegrationTestMockingConfig {
private DetachedMockFactory factory = new DetachedMockFactory()
@Bean
CloudStorage s3Client() {
def mockedS3 = factory.Mock(CloudStorage)
1 * mockedS3.tempDownload(_) >> {
log.info("mocked s3 client")
new File(ClassLoader.getSystemResource("testfiles/regular.zip").toURI())
}
mockedS3
}
}
答案 0 :(得分:0)
只需将方法存入测试的setup()
方法中即可。您可以通过将依赖注入到测试中来获得模拟。
答案 1 :(得分:0)
不支持在规范上下文之外进行模拟/存根。我建议使用Spock 1.2的@SpringBean。
@SpringBootTest
class MyTest extends Specification {
@SpringBean
CloudStorage mockedS3 = Mock()
def "test"() {
when:
otherBean.otherMethod()
then:
1 * mockedS3.tempDownload(_) >> {
log.info("mocked s3 client")
new File(ClassLoader.getSystemResource("testfiles/regular.zip").toURI())
}
}
}