gpt4 book ai didi

java - 我如何在 spock 测试中使用 redisService 我需要清理 redis 数据库以进行设置和清理

转载 作者:可可西里 更新时间:2023-11-01 11:23:15 24 4
gpt4 key购买 nike

我有一个在 redis 中存储值的类。当我测试它时,它工作正常。如果我为第二本书运行它,它将失败,因为 redis 上已经有一个条目。我想在运行测试之前和测试完成之后清理 redis 数据库,但我无法做到这一点。

我正在运行 grails 2.2.4。

我试过@autowired注解,@mock(RedisService),还有redisService = grails.util.Holders.applicationContext.getBean('redisService' ) 作为 RedisService 并且我无法创建 redisService 的实例。

这就是我想要做的:

redisService.withRedis { Jedis redis ->
redis.del("test")
}

预期的结果是条目从 redis 中删除。

我遇到了几个错误,例如:java.lang.NullPointerException:无法获取空对象上的属性“资源”和java.lang.IllegalArgumentException: ServletContext 不能为空

如有任何帮助,我们将不胜感激。

最佳答案

如果你像我一样想知道我到底要怎么做:

@Mock(RedisService) // above class definition

def setup(){
def redisPoolMock = new Object()
redisPoolMock.metaClass.getResource = { ->
throw new JedisConnectionException('Generated by a mocked redisPool')
// Or you can put the value in here maybe
}
redisService = new RedisService()
redisService.redisPool = redisPoolMock
service.redisService = redisService
}

现在您可以测试您的服务了。

关于java - 我如何在 spock 测试中使用 redisService 我需要清理 redis 数据库以进行设置和清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57615474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com