2012-07-05 33 views
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,所以我無法從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 
} 

,但我希望有一個更好的辦法...

回答

2

假設你正在使用的Grails 2.0.x的你可以看一下該書通過其任何屬性使用findBy *方法:

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

動態查找程序不是2.0特定的 –