gpt4 book ai didi

unit-testing - Grails中的Micronaut声明式客户端:如何模拟它?

转载 作者:行者123 更新时间:2023-12-02 15:40:55 25 4
gpt4 key购买 nike

在单元测试Grails服务时,模拟声明式REST客户端的正确方法是什么?

详细信息

我在Grails 4应用程序中使用Micronaut的声明性HTTP客户端。

我尝试使用Ersatz对客户端进行单元测试,但几天后却无法正常工作:
How do I configure Micronaut @Client in a grails test environment?

现在,我正在尝试使用模拟依赖关系的标准方法对使用它的服务进行单元测试:

class MyServiceSpec extends Specification implements
ServiceUnitTest<MyService> {

MyRestClient myRestClient = Mock()

def setup() {
service.myRestClient = myRestClient
}
...
}

这给了我一个 NoSuchBeanDefinitionException

通过反复试验,我发现声明性客户端无法像其他Grails bean一样与 def myRestClient一起使用。它必须是 @Autowired
    at org.grails.testing.GrailsUnitTest$Trait$Helper.defineBeans(GrailsUnitTest.groovy:99)
at grails.testing.services.ServiceUnitTest$Trait$Helper.mockArtefact(ServiceUnitTest.groovy:58)
at org.grails.testing.ParameterizedGrailsUnitTest$Trait$Helper.getArtefactInstance(ParameterizedGrailsUnitTest.groovy:48)
at grails.testing.services.ServiceUnitTest$Trait$Helper.getService(ServiceUnitTest.groovy:85)
at com.mycompany.MyServiceSpec.setup(MyServiceSpec.groovy:##)
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mycompany.MyRestClient' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1662)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1221)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1175)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:595)
... 15 more

最佳答案

原来这是Grails 4.0.1中的错误。该问题似乎在4.0.2中已修复。

https://github.com/rmorrise/client-spec/tree/mock-client

从Grails松弛 channel 向@erichelgeson和乡亲们提供的支持!

关于unit-testing - Grails中的Micronaut声明式客户端:如何模拟它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60980883/

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