【问题标题】:Grails spock unit testing not consistentGrails spock 单元测试不一致
【发布时间】:2014-12-18 18:14:45
【问题描述】:

我有一个带有返回 XML 的方法的类。除此之外,我还有一个 Spock 单元测试。测试可以单独运行,即如果我执行 test-app :unit TestSpec。

但是它会引发错误 -

Cannot cast object 'com.mypackage.SequencePartResponse@518a824' with class 'com.mypackage.SequencePartResponse' to class 'grails.converters.XML'

当我运行所有测试时(test-app :unit)。我在 stackOverflow (12098289) 上发现了一个类似的问题,它建议使用 'addConvertors(offendingClassName)' 来解决这个问题,但这不适用于 Spock。它只是抛出一个未找到方法的错误。

有人知道如何排序吗?

【问题讨论】:

    标签: unit-testing grails testing spock


    【解决方案1】:

    好吧,我找到了一种让它工作的方法。我没有在我的控制器中呈现为 XML -“将 someObject 呈现为 XML”,而是“呈现新的 XML(someObject)”。虽然如果有人能解释发生了什么我会很感激的

    【讨论】:

      【解决方案2】:

      我不确定这是否会对您有所帮助,但这是值得注意的一点。

      假设你有一个 ClassA 类,它里面有 ClassB 对象。

      ClassA{
       ClassB obj;
       String val;
      
      }
      

      如果你尝试使用延迟获取来获取 A 类的对象,那么转换器也会尝试转换 ClassB 的对象,但是由于 LAZY 获取,它没有任何 ClassB 的对象,它将无法正确转换对象并引发此错误。

      它会尝试像下面这样转换它

      {
         obj : {//It will not find this and throw an exception},
         val :  "" 
      }
      

      所以尝试使用 EAGER 获取类型来获取您的对象。

      如果您正在做这样的事情,希望它可能会有所帮助。

      【讨论】:

      • 感谢您的评论 .. 在这种情况下,它不适用,我以后会牢记这一点 ..
      猜你喜欢
      • 1970-01-01
      • 2014-02-21
      • 2014-06-21
      • 2016-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      相关资源
      最近更新 更多