Тестирование пользовательских ограничений в приложении Grails - PullRequest
0 голосов
/ 07 апреля 2010

В качестве модульного теста у меня есть следующее:

void testCreateDealer() {
      mockForConstraintsTests(Dealer)
      def _dealer= new Dealer( dealerName:"ABC",
                            Email:"abc-motors@global.com",
                            HeadOffice:"",
                            isBranch:false)
       assertFalse _dealer.validate()

    }

Но при запуске теста я получаю следующую ошибку:

No signature of method: static com.myCompany.Dealer.findByDealerNameIlike() is applicable for argument types: (java.lang.String) values: [ABC]

Я использую некоторые пользовательские ограничения в своем доменеучебный класс.Как я могу проверить это?

 static constraints = {
     dealerName(blank:false, validator:
            { val, obj ->
                      def similarDealer = Dealer.findByDealerNameIlike(val)
                      return !similarDealer || (obj.id == similarDealer.id)
            }
     )

Ответы [ 2 ]

2 голосов
/ 07 апреля 2010

Попробуйте изменить mockForConstraintsTests () на mockDomain () - вы используете метод Dealer.findX () в ограничении, которое зависит от домена Dealer.

Кстати, тест все равно не пройдёт, если вы не создали подобного дилера в методе setUp () класса теста.

0 голосов
/ 07 апреля 2010

В модульных тестах, даже с mockDomain, атрибут id объектов домена не устанавливается автоматически или автоматически увеличивается.Все создаваемые вами доменные объекты будут иметь идентификатор null, если вы не укажете его явно.

Возможно, ваш тест не пройден, потому что тест obj.id == similarDealer.id верен, поскольку оба они имеют id: null.Попробуйте установить атрибут id ваших поддельных объектов дилера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...