我有一些问题与测试我的 Camel 上下文与Spring Boot 。
我使用的是 Spring Boot 1.5.6、斯波克1.1-groovy-2.4、 Camel 2.19.2和 Camel Spring启动器2.19.2。
我正在使用一个spock mock,并且在一个@TestConfiguration
类中使用DetachedMockFactory
。我所有的bean都使用构造函数注入。我正在将一个mock的@Repository
注入到一个处理器@Component
中,并且我还将它注入到我的测试类中以定义交互。
我用@SpringBootTest
注解了我的测试,其中包含了所有Processor
实现和所有RouteBuilder
扩展的类列表。我还用TestConfiguration
类注解了一个'@Import'。我甚至在我的测试中为这个仓库bean使用了构造函数注入!
但是,注入测试类的mock似乎并不是正在使用的mock。有人知道哪里出了问题吗?我在每次测试之前和之后都尝试过@DirtiesContext
来重新加载上下文,但是没有任何帮助。
2条答案
按热度按时间w6lpcovy1#
DetachedMocks行为不正确的问题,例如,看起来是同一个示例,通常是由一些框架将它们 Package 在代理中引起的。例如,这可能是由Spring中的
@Transactional
注解引起的,该注解创建了一个代理以便于JDBC会话管理。另请参见issue #758对于spring,可以使用
AopUtils
(jdoc)的方法。简单的方法是使用AopUtils.isAopProxy
检查它是否被spring代理,然后展开它。在测试中
编辑:从Spock 1.2开始,有一个扩展可以自动解包注入的bean
@UnwrapAopProxy
。lf5gs5x22#
如果有人提出同样的问题。
Spock添加了额外的
@UnwrapAopProxy
代替上面提到的util方法来完成这项工作。