探索如何使用Spock 1.2将Spock的模拟和间谍自动注入到Spring上下文中。
Spock中的存根/模拟/间谍(及其生命周期)一直与Spock Specification
类紧密结合。 只能在测试类中创建它们。 因此,使用共享的预定义模拟(在单元测试和集成测试中)是有问题的。
这种情况在Spock 1.1中有所改善,但只有在基于Spring的集成测试中使用Spock模拟子系统的全新Spock 1.2(撰写本文时为1.2-RC1)时,与在Spring中对Mockito模拟使用@SpringMock
一样容易开机 让我们检查一下。
顺便说一句,除Spock 1.2-RC1之外,为了更前沿,我将使用Spring Boot 2.1.0.M2,Spring 5.1.0.RC2和Groovy 2.5.2(但所有功能都应在Spring的稳定版本中使用(引导)和Groovy 2.4)。
还有一件事。 为了简单起见,在本文中,我将使用术语“模拟”来指代存根和间谍。 它们的行为有所不同 ,但是在Spock测试中将其注入Spring上下文的范围通常并不重要。
Spock 1.1 –手动方式
多亏了LeonardBrünings的工作,Spock中的模拟才脱离了Specification
类。 最终可以在外部创建它们,然后将其附加到正在运行的测试中。