前言注意:我剛開始學習Grails,因此我確信還有許多其他問題和優化空間。排除grails中的NullPointerException異常
我有一個父對象(集合)和子對象(事件),在一對多的映射中有兩個域。我正在嘗試編寫刪除子項的集成測試。在代碼之前,我已經成功創建了一個父代和三個子代。我有問題的地方是得到一個孩子準備刪除它。我的示例代碼的第一行僅僅是因爲我的基本嘗試進行故障排除。
// lines 95-100 of my EventIntegrationTests.groovy file
// delete a single event
assertEquals("2nd Event", event2.title) // passes
def foundEvent = Event.get(event2.id) // no apparent problems
assertEquals("2nd Event", foundEvent.title) // FAILS (line #98)
foundEvent.delete()
assertFalse Event.exists(foundEvent.id)
我得到的錯誤信息是:
Cannot get property 'title' on null object
java.lang.NullPointerException: Cannot get property 'title' on null object
at edu.learninggrails.EventIntegrationTests.testEventsDelete(EventIntegrationTests.groovy:98)
我應該我的下一個故障排除步驟是什麼? (因爲第一個assertEquals通過,事件2顯然不是空的,所以在這一點上我不知道如何排除第二個assertEquals的故障。)
我試圖通過Smith&Ledbrook的「Grails in Action」(2009)製作自己的學習應用程序。在他們的代碼和1:m關係的後續解釋中,他們指出只需將子實例添加到父項中即可堅持子實例(pp。83&84),所以我沒有試圖明確'save()'。我嘗試了幾個不同的'event2.save()'和'event.save(flush:true)'迭代。在我剛開始的時候,我並不認爲自己應該像往常一樣頻繁地運行「清潔」,所以我得到了不一致的結果。 – CyberZ 2010-12-07 23:42:48
此時,我的代碼是: – CyberZ 2010-12-07 23:46:35
此時,我的代碼爲: //刪除單個事件 assertEquals(「A'10 2nd Event」,event2.title) event2.save(flush:真) event2.id.inspect() DEF foundEvent = Event.get(event2.id) foundEvent.inspect() 的assertEquals( 「A '10第二事件」,foundEvent.title) foundEvent.delete() assertFalse Event.exists(foundEvent.id) – CyberZ 2010-12-07 23:57:51