[英]Grails spock unit testing not consistent
我有一个带有返回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。 它只是抛出一个方法未找到错误。
任何人有任何想法如何排序?
好吧,我找到了一种使它工作的方法..而不是在我的控制器中以XML形式呈现-“将someObject呈现为XML”,而是“呈现新的XML(someObject)” ..尽管有人可以解释发生了什么,我还是欣赏它
我不确定这是否对您有帮助,但这是一个值得注意的点。
假设您有一个ClassA类,并且其中包含ClassB对象。
ClassA{
ClassB obj;
String val;
}
而且,如果您尝试通过使用延迟获取来获取类A的对象,则转换器也会尝试转换ClassB的对象,但是由于LAZY的获取,ClassB没有任何对象,因此它将无法转换ClassB的对象。对象正确并引发此错误。
它将尝试如下转换
{
obj : {//It will not find this and throw an exception},
val : ""
}
因此,请尝试使用EAGER提取类型来提取您的对象。
如果您正在做这样的事情,希望对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.