groovy 如何用Spock模拟类中的静态变量和构建器?

zaq34kh6  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(224)
public class MyLogger {

    @ConfigProperty(name = "application.version")
    String appVersion;

    public static final LogContext logContext = LogContext.createLogContext();

    public void logIt() {
        logContext.eventBuilder(CommonTemplates.FAILED)
                .withObject("Token")
                .withReason("Did not work!")
                .withDeviceVersion(appVersion)
                .build()
                .logError(true);
    }

我需要使用spock模拟静态变量和构建器。测试的重点应该是检查构建器是否是用Object(“Token”)和Reason(“Did not work”)调用的

.withObject("Token")
                .withReason("Did not work!")

我怎么能和斯波克一起呢?

bvhaajcl

bvhaajcl1#

如果没有额外的工具,比如Mockito或者Sarek,你就无法在Spock中模拟静态方法。我建议重构你的代码以获得更好的可测试性,并且避免使用静态方法。也许你更愿意使用一个带有惰性示例化的单例模式或者其他方法来实际注入一个LogContext示例,然后你就可以正常地模拟和存根了。

相关问题