0

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

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不相关的页面,因此我无法id从 URL 获取。我唯一能想到的就是做这样的事情:

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
}

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

4

1 回答 1

2

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

def book = Book.findByTitle("Awesome Book")
assertNotNull book
于 2012-07-05T06:48:39.293 回答