如何在Grails中测试非控制器/域/服务类

时间:2014-12-19 14:37:33

标签: grails testing spock

我在sources / groovy中定义了一个Groovy帮助器类,我正在尝试使用Spock进行测试。我正在尝试测试的类有一个对org.springframework.validation.Errors的引用,称为错误..

我定义了一个测试,它会调用下面显示的一些代码。

def validateSuppliedDocument() {

      // If we create one it's always valid  ..

      if (txn.transactionType.autoCreateDocument) {
          return true
      } else {

          txn.documentHeader =
                  DocumentHeader.findByDocumentReferenceCodeAndDocumentType(txn.documentReferenceCode, txn.transactionType.associatedDocumentType)

          if (!txn.documentHeader) {
              errors.rejectValue('documentReferenceCode', "document.not.found",
                      [txn.documentReferenceCode].toArray(), 'Document not found')
              return false
          }

我的问题是由'errors.rejectValue'语句引起的,因为错误实例为null ..

如何才能将Grails注入此类仅用于测试目的,以及应该给出哪个类,Errors是一个接口?

仅供参考信息此方法作为字段上的验证器的一部分被调用(如果有帮助..)并且在生产中正常工作..

谢谢

1 个答案:

答案 0 :(得分:0)

您可以为errors字段创建mock,只需在帮助程序类实例中设置它(假设errors字段是公共的)。它应该类似于:

import spock.lang.*
import org.springframework.validation.Errors

MyHelperClass myHelper = new MyHelperClass()
myHelper.errors = Mock(Errors)