首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Grails中测试spring bean?

如何在Grails中测试spring bean?
EN

Stack Overflow用户
提问于 2014-11-19 01:07:19
回答 1查看 1.7K关注 0票数 0

这是这里发布的问题的后续问题:

How to initialise/wire beans in Grails Spock unit tests?

我还没有找到在src/java中用java编写的spring bean,然后在Grails中使用Spock进行单元测试的示例。

给定:

代码语言:javascript
复制
// MyBean.java
// this needs to be in java as it is playing with spring-data-neo4j
package com.me;
public class MyBean {
    @Autowired
    def someNeo4jBeanThatCannotBeTestedByItself


    String readFromDb() {
        // this will execute code to actually read from a DB
        return "Hello from DB";
    }
}

注意,"someNeo4jBeanThatCannotBeTestedByItself“是一个与spring -data-new4j相关联的bean,我希望看到我的代码实际上在这里写了东西,所以我希望我的单元/集成测试加载spring bean(我不想模拟这一点)。

测试用例是什么样子的,是集成测试吗?我已经尝试了几个变体,但是无法让spring bean被Grails测试应用初始化。

EN

回答 1

Stack Overflow用户

发布于 2015-01-19 14:38:43

我知道这是个老帖子。因为这个问题还没有回答,所以我正在尝试回答。如果你已经想好了,你可以忽略。

我相信你可以为此编写单元测试。但是如果这个类在下,src/groovy或者src/java spring autowire就不能工作了。您需要在`resources.groovy的文件中添加bean、someNeo4jBeanThatCannotBeTestedByItselfMyBean,如下所示:

代码语言:javascript
复制
beans={
      someNeo4jBean (Neo4jBeanClass)
      myBean(MyBean){
      someNeo4jBeanThatCannotBeTestedByItself = ref(someNeo4jBean)   
      }
}

您可以删除bean MyBean中的@Autowired标注

现在,为了使spec工作,您需要将此属性添加到您的spec static loadExternalBeans = true中,然后它加载resources.groovy文件中存在的bean。

示例规格:

代码语言:javascript
复制
@TestMixin(GrailsUnitTestMixin)
class MyBeanSpec extends Specification {
    static loadExternalBeans =true//this loads beans present in resources.groovy
    def myBean

     def setup() {
        myBean= applicationContext.getBean("myBean")
        //now you can use this `myBean` in test cases..
    }

}

我也有过类似的情况,我用这种方法摆脱了这种情况。希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26999925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档