如何检查集成测试中的持久数据

时间:2012-07-05 06:11:12

标签: testing grails integration-testing

在我的集成测试中,我执行以下操作:

void testSave() {
    def controller = new BookController()
    controller.params.title = "Awesome Book"
    controller.params.pages = 1000
    controller.save()
    // i want to check book data here
}

如何检索持久存储的Book我的控制器并检查title == "Awesome Book"pages == 1000?我可以以某种方式从测试中访问控制器中的bookInstance变量吗?

我无法假设Book.get(1)会给我正确的Book,因为数据库中会有引导数据。控制器会重定向到完全Book无关的页面,因此无法从URL中获取id。我唯一能想到的就是做这样的事情:

void testSave() {
    def oldIdList = Book.list()*.id
    // set up the parameters and call controller.save()
    def insertedId = Book.list()*.id - oldIdList
    // check Book.get(insertedId) properties
}

但我希望有更好的方法......

1 个答案:

答案 0 :(得分:2)

假设您使用的是Grails 2.0.x,您可以使用findBy *方法通过任何属性查找本书:

def book = Book.findByTitle("Awesome Book")
assertNotNull book