2012-07-02 1 views
4

У меня странная проблема с модульным тестированием в Грааль, когда я пытаюсь сохранить высмеивал объект его бросить NullPointerExceptionGrails 2.0.1 модульное тестирование NullPointerException на экономии

java.lang.NullPointerException 
at org.grails.datastore.mapping.engine.NativeEntryEntityPersister.persistEntity(NativeEntryEntityPersister.java:798) 
at org.grails.datastore.mapping.engine.EntityPersister.persist(EntityPersister.java:130) 
at org.grails.datastore.mapping.core.AbstractSession.persist(AbstractSession.java:477) 
at org.grails.datastore.gorm.GormInstanceApi.doSave(GormInstanceApi.groovy:166) 
at org.grails.datastore.gorm.GormInstanceApi$_save_closure4.doCall(GormInstanceApi.groovy:143) 
at org.grails.datastore.mapping.core.DatastoreUtils.execute(DatastoreUtils.java:301) 
at org.grails.datastore.gorm.AbstractDatastoreApi.execute(AbstractDatastoreApi.groovy:34) 
at org.grails.datastore.gorm.GormInstanceApi.save(GormInstanceApi.groovy:142) 
at it.rascio.ConverterServiceTests.testConvert(ConverterServiceTests.groovy:64) 

, что у меня есть тест, как :

@TestFor(ConverterService) 
@TestMixin(GrailsUnitTestMixin) 
@Mock([MyObj1, MyObj2, LittleObject]) 
class ConverterServiceTests{ 
    def littleObject; 
    void setUp(){ 
     littleObject = new LittleObject(prop1: 'hello', prop2: 'world') 
    } 

    void testConvert(){ 
    MyObj1 obj = new MyObj1() 
    obj.prop = 'my property' 
    obj.littleObject = littleObject 
    obj = obj.save(flush:true, failOnError: true) 

    MyObj2 b = new MyObj2() 
    b.obj1Id = obj.id; 

    assert service.convert(b) == null; 


} 

исключение генерируется, когда я вызываю метод .save. Я видел, что если я удалю littleObject, он работает. Может ли кто-нибудь понять, что это за исключение?

ответ

6

Если ваш класс MyObj1 содержит некоторые встроенные свойства других типов или имеет любые другие каскадные сбережения, вы должны добавить эти классы в список аннотаций @Mock.

+0

Да, это что-то в этом роде, у меня есть другой объект внутри Obj1, но я также добавил его в mock, но без каких-либо успехов ... – rascio

+0

нет Я высмеивал неправильный класс (я ненавижу класс со схожими имена!) большое спасибо! – rascio