在我的集成测试中,我执行以下操作:
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
}
但我希望有更好的方法......
答案 0 :(得分:2)
假设您使用的是Grails 2.0.x,您可以使用findBy *方法通过任何属性查找本书:
def book = Book.findByTitle("Awesome Book")
assertNotNull book