примечание о предисловии: я только начинаю изучать 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.)
Я пытаюсь создать свое собственное учебное приложение, когда прокладываю себе путь через «Grails in Action» Смита и Ледбрука (2009). В своем коде и последующем объяснении отношений 1: m они указывают, что дочерний экземпляр сохраняется просто путем добавления его к родительскому (стр.83 и 84), поэтому я не попытался явно «сохранить()». Я пробовал несколько разных итераций «event2.save()» и «event.save (flush: true)». Раньше я не думал, что я бегу «чистым» так же последовательно и часто, как и следовало бы, поэтому я получал непоследовательные результаты. – CyberZ 2010-12-07 23:42:48
На данный момент мой код: – CyberZ 2010-12-07 23:46:35
На данный момент мой код для этого раздела: // удаляем одно событие assertEquals («A10 событие 2», event2.title) event2.save (flush: правда) event2.id.inspect() Защита 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