【问题标题】:Grails Integration testing: problems with getGrails 集成测试:get 的问题
【发布时间】:2010-09-06 15:24:46
【问题描述】:

我正在尝试编写一个简单的集成测试,但在使用域对象时遇到了一些问题。我在unit testing 上阅读过,但无法弄清楚。

这是我的简单测试:

    User user = User.get(1)

    controller.params.userid = "1"
    controller.session.user = user

    controller.save();

错误信息是:

groovy.lang.MissingMethodException: 否 方法签名:静态 com.baufest.insside.user.User.get() 是 适用于参数类型: (java.lang.Integer) 值:1

我的猜测是我应该模拟 user 对象,但不知道如何。

【问题讨论】:

    标签: unit-testing grails integration-testing mocking grails-orm


    【解决方案1】:

    你说你是集成测试,但看起来你是单元测试。测试是在测试/集成还是测试/单元?单元测试需要模拟,但集成测试有一个初始化的 Spring 应用程序上下文和 Hibernate,并针对内存数据库运行。

    这在用户指南中有所描述,地址为http://grails.org/doc/latest/(您引用的是较旧的 1.1 版本)。

    要模拟 User 类,只需在 setUp 或测试方法中使用一个或多个测试实例调用 mockDomain:

    def users = [new User(...), new User(...), ...]
    mockDomain User, users
    
    ...
    
    User user = User.get(1)
    

    【讨论】:

    • 它在 IntegrationTests 下。我要做的是测试一个控制器,该控制器从其 save() 方法中的会话中检索用户对象。
    • 除非您正在做一些时髦的事情,否则您不应该收到缺少方法的异常。你在扩展 GroovyTestCase 吗?集成测试应该,但单元测试会扩展 Grails 单元测试类之一,如 ControllerUnitTestCase。
    猜你喜欢
    • 2011-06-19
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多