我刚刚开始为Grails应用程序编写测试,我已经看过this并阅读this,并希望使用测试来检查是否已正确设置约束。
现在,在它的时候,我想还应该测试一下默认值是否正确(如果有人篡改域对象,那就是安全检查的类型)。问题似乎是如果我模拟一个对象,它将存在,但默认值将不会被设置。有没有办法检查这个,或者我只是要谨慎(拼写'偏执狂')?
它应该是这样的:
class Event implements Taggable {
...
Boolean publish
...
static constraints = {
...
publish nullable: true, defaultValue: true
...
}
}
和
@TestMixin(GrailsUnitTestMixin)
@TestFor(Event)
class EventSpec extends Specification{
Event ev = new Event(start: new Date(), subProgram: new Subprogram(),venue: new Venue())
def setup() {
mockForConstraintsTests(Event)
}
def cleanup() {
}
void "publish ist default true"() { // cannot be tested ???
expect:
ev.publish
}
这是因为DB没有参与(单元测试中没有环境可用)设置默认值吗?我只能在集成测试中这样做吗?
答案 0 :(得分:1)
您是对的,您需要在集成测试中执行此操作,因为并非所有数据库组件都在单元测试中连接。