我正在尝试在Grails 2.4.3中测试子类的控制器。域模型是这样的:
abstract class Task { ... }
class SubTask extends Task { ... }
当尝试为类SubTaskController运行生成的测试时,7个测试中有3个失败:
似乎(至少)域类的id未初始化,尽管我在populateValidParams()方法中定义了它。调试器在subTaskInstance对象上显示两个(!)生成的id属性,均为null。当我在调试器中将id设置为某个长值时,错误至少会在几行之后出现。模拟子类中是否存在错误,或者我在做一些根本错误的事情?
我也在基类中没有“抽象”的情况下尝试过它,但是得到了同样的错误。 生成的测试适用于不在继承层次结构中的对象。
当我在测试代码中直接设置id属性时,测试失败了
SubTask.count() == 1
断言。似乎持久层mock不处理子类。
答案 0 :(得分:0)
在https://github.com/jeffbrown/controllerinheritancetest查看项目。两个控制器单元测试都通过了。
您确定在控制器单元测试中使用populateValidParams
方法设置了有效数据吗?这可能是您测试失败的原因。