【问题标题】:Grails Controller Testing - Problems with dynamic methodsGrails 控制器测试 - 动态方法的问题
【发布时间】:2010-09-08 13:58:41
【问题描述】:

我正在旧应用程序上运行一些旧的(但据我所知是有效的)测试,并注意到其中许多无法正常工作。错误消息通常是'No method signature for some dymamic method'

使用mockDomain 后,我设法解决了这个问题。 但是,我不知道如何测试在内部创建对象的控制器。

例如,我创建了一个示例控制器(省略了导入语句)

package com.tmp
class DummyController2 {

    def index = { }

    def createObject={
        def emp= new Emp(name:'name',description:'description')

        if (emp.validate()){
          render 'OK'
        }
        else{
          render 'FAIL'
        }
    }
}

然后是示例控制器测试

package com.tmp
class DummyController2Tests extends ControllerUnitTestCase{

  DummyController2 controller

  public void setUp(){
    super.setUp()
    controller = new DummyController2()
  }

  public DummyController2Tests(){
         super(DummyController2Tests)
  }
  public void tearDown(){
    super.tearDown()
  }

  void testCreateObject(){
    assertEquals 'OK',controller.createObject()
  }
}

现在当我运行这个测试时,我得到了

groovy.lang.MissingMethodException: 否 方法的签名: Emp.validate() 是 适用于参数类型:() 值:[]

有解决办法吗?在控制器中添加mockDomain 语句似乎非常侵入性错误。也许只是我使用的是旧的 grails (1.2.1)?

提前致谢

【问题讨论】:

    标签: unit-testing grails controller integration-testing


    【解决方案1】:

    您的域类没有被模拟。添加到setUp():

    mockDomain Emp
    

    【讨论】:

    • java.lang.NullPointerException:无法在空对象上调用方法 containsKey()
    • 对不起,忘了那个,你应该使用“MockUtils.mockLogging Emp”
    猜你喜欢
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多