【问题标题】:How to make Spock Helper method available across all Specs or global如何使 Spock Helper 方法在所有规格或全局范围内可用
【发布时间】:2012-10-02 20:13:43
【问题描述】:

我在特定规范中有 Spock Helper 方法。此方法生成字符串以测试大小约束:

def genString(size) {
    def nameTooLong = 'x'
    size.times { nameTooLong <<=  "x" }
    return nameTooLong
}

我也想在其他规范中重用这个辅助方法。怎么做?

感谢您的帮助

附言是否有 groovy kung-fu 可以在一条短线中完成相同的事情,所以我可以在初始化实例时作为参数传递?

【问题讨论】:

    标签: grails groovy spock


    【解决方案1】:

    你也可以使用继承。

    class SharedFixture extends Specification {
        def sharedMethod() {
           ......
        }
    }
    

    然后

    class TestClass extends SharedFixture {
        def test() {
           sharedMethod()
        }
    }
    

    【讨论】:

      【解决方案2】:

      我对 Spock 测试和在生成测试数据的规范中重复使用辅助方法有类似的需求。

      这些辅助方法始于一个规范。

      我刚刚重构并创建了一个带有静态方法的辅助类。

      您也可以这样做,创建一个辅助类并像这样移动您的测试方法:

      class TestDataGen {
      
          ....
          public static String genString(size) {
              def nameTooLong = 'x'
              size.times { nameTooLong <<=  "x" }
              return nameTooLong
          }
          ....
      }
      

      【讨论】:

      • 谢谢菲利普回答我的问题。
      【解决方案3】:

      您还可以将函数更改为:

      def genString(size) {
        'x' * ( size + 1 )
      }
      

      def genString(size) {
        'x'.padLeft( size + 1, 'x' )
      }
      

      第二个,您可能可以内联到您的测试中,因为它非常独立

      【讨论】:

        猜你喜欢
        • 2017-11-09
        • 2015-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-13
        • 2013-06-21
        • 2012-04-20
        • 1970-01-01
        相关资源
        最近更新 更多