grails生成的控制器测试在子类上失败

时间:2014-10-21 14:43:52

标签: grails controller spock

我正在尝试在Grails 2.4.3中测试子类的控制器。域模型是这样的:

abstract class Task { ... }

class SubTask extends Task { ... }

当尝试为类SubTaskController运行生成的测试时,7个测试中有3个失败:

  1. 保存
  2. 更新
  3. 删除
  4. 似乎(至少)域类的id未初始化,尽管我在populateValidParams()方法中定义了它。调试器在subTaskInstance对象上显示两个(!)生成的id属性,均为null。当我在调试器中将id设置为某个长值时,错误至少会在几行之后出现。模拟子类中是否存在错误,或者我在做一些根本错误的事情?

    我也在基类中没有“抽象”的情况下尝试过它,但是得到了同样的错误。 生成的测试适用于不在继承层次结构中的对象。

    当我在测试代码中直接设置id属性时,测试失败了  SubTask.count() == 1断言。似乎持久层mock不处理子类。

1 个答案:

答案 0 :(得分:0)

https://github.com/jeffbrown/controllerinheritancetest查看项目。两个控制器单元测试都通过了。

您确定在控制器单元测试中使用populateValidParams方法设置了有效数据吗?这可能是您测试失败的原因。