Юнит-тестирование контроллера в граалях - PullRequest
0 голосов
/ 03 января 2012

Я пытаюсь выполнить модульное тестирование действия списка контроллера.Вот код для его проверки:

  void testListAction()
   {
       ac = new AddressesController();

       def org = new Organizations(viewAllPost: true);
       mockForConstraintsTests(Addresses);
       def a = new Addresses(firstLine:'A', secondLine:'B', thirdLine:'C', luCountry:UnitedStates, zipCode:'12345', luState:Florida, city:'jag');
       assertTrue(a.validate());
       mockSession['currentUserOrganizationId'] = org;  

       mockDomain(Addresses, [
           new Addresses(firstLine:'A1', secondLine:'B', thirdLine:'C', luCountry:UnitedStates, zipCode:'12345', luState:Florida, city:'jag'),
           new Addresses(firstLine:'A2', secondLine:'B2', thirdLine:'C2', luCountry:UnitedStates, zipCode:'12344', luState:Florida, city:'jag2')
           ]);

        def model = ac.list();
       assertEquals(2, model.postInstanceList.size());
   }

Но как бы я ни пытался, я всегда получаю тот же результат, что model.postInstanceList равен нулю, и я не могу вызвать метод size для него.Что я тут не так делаю?

Ответы [ 2 ]

2 голосов
/ 03 января 2012

Вы неправильно обращаетесь к модели.В модульном тесте вы должны получить доступ к модели через:

def model = controller.modelAndView.model

Затем получите доступ к тому, что вы хотите от модели, так что в вашем случае это будет:

ac.list()
def model = ac.modelAndView.model
assertEquals(2, model.postInstanceList.size())
1 голос
/ 03 января 2012

Вы не сохраняете экземпляры.Вы должны сохранить:

mockDomain(Addresses)
new Addresses(firstLine:'A1', secondLine:'B', thirdLine:'C', luCountry:UnitedStates, zipCode:'12345', luState:Florida, city:'jag').save()

new Addresses(firstLine:'A2', secondLine:'B2', thirdLine:'C2', luCountry:UnitedStates, zipCode:'12344', luState:Florida, city:'jag2').save()

Я бы сделал это так:

mockDomain(Addresses)
mockForContraintsTests(Addresses)
def address1 = new Addresses(firstLine:'A1', secondLine:'B', thirdLine:'C', luCountry:UnitedStates, zipCode:'12345', luState:Florida, city:'jag')
if(address1.validate()) address1.save()
def address2 = new Addresses(firstLine:'A2', secondLine:'B2', thirdLine:'C2', luCountry:UnitedStates, zipCode:'12344', luState:Florida, city:'jag2')
if(address2.validate()) address2.save()


assertEquals 2, Addresses.list().size()
...