我正在使用Spock 1.0编写测试,并尝试使用Spock的集成模拟和存根功能来完成此 *** 作.全局存根应该帮助我拦截LoggerFactory调用以获取实际的Logger实例,所以我目前的猜测是这样的:
LoggerFactory logFactory = GroovyStub(global: true)logFactory.getLogger(_) >> Mock(Logger)// create my @Slf4j-annotated object afterwards
有趣的是,拦截实际上是有效的,println确认该类实际上获得了一个名为’dummy’的类型’Logger’的对象Mock,但指示存根返回模拟的第二个语句似乎没有捕获.相反,默认存根行为返回另一个存根,当然不能用于模拟:
org.spockframework.runtime.InvalIDSpecException: Stub 'dummy' matches the following required interaction:1 * plugin.log.warn(_) (0 invocations)Remove the cardinality (e.g. '1 *'),or turn the stub into a mock.
我需要更改什么才能让存根的LoggerFactory返回模拟Logger?
解决方法 您需要使用反射设置私有最终日志字段,如下所述: Unit testing of a class with StaticLoggerBinder 总结以上是内存溢出为你收集整理的groovy – 与Spock嘲笑slf4j全部内容,希望文章能够帮你解决groovy – 与Spock嘲笑slf4j所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)