如何制作仅用于测试的方法?

时间:2014-10-06 07:53:44

标签: grails groovy spock

大家好我正在尝试在父控制器中测试声明性异常处理。问题是这个

  

编译时必须存在异常处理程序方法。具体而言,不支持元编程到控制器类的异常处理程序方法。

来源:http://geekswithblogs.net/zakariacse/archive/2014/07/06/grails-basic-controllerspart-4.aspx

为测试添加方法是我的解决方案之一,但我认为在开发或生产环境中公开它并不是一个好习惯。有没有办法让它只在测试环境中可用?

1 个答案:

答案 0 :(得分:0)

我不明白为什么你需要添加一个仅在测试环境中可用的方法来测试异常处理?就个人而言,我试图通过使用一组无效的参数调用控制器来测试这个(导致抛出异常),或者使用mocking / metaprogramming来改变一个动作,使它总是抛出异常

这是使方法仅在测试环境中可用的一种方法,尽管这不是我倾向于自己使用的方法:

class Foo {

  def testOnlyMethod() {
    if (environment.current = Environment.TEST) {
      // do whatever this method is supposed to do in the test env
    } else {
      // in non-test envs, this method behaves similarly to a non-existent method
      throw new MissingMethodException()
    }
  }
}