Grails spock单元测试不一致

时间:2014-12-18 18:14:45

标签: unit-testing grails testing spock

我有一个带有返回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。它只是抛出一个找不到错误的方法。

任何想法如何排序?

2 个答案:

答案 0 :(得分:0)

我找到了一种让它工作的方法..而不是在我的控制器中呈现为XML - "将someObject渲染为XML" ,我做"渲染新的XML(someObject)" ..虽然如果有人能解释我正在做什么,我会很感激

答案 1 :(得分:0)

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

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

ClassA{
 ClassB obj;
 String val;

}

如果你试图通过使用Lazy抓取来获取类A的对象,那么转换器也会尝试转换ClassB的对象,但由于LAZY获取它没有任何ClassB的东西,它将无法正确转换对象并抛出此错误。

它会尝试将其转换为以下

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

因此,请尝试使用EAGER提取类型来获取对象。

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