0

Итак, у нас есть спокойная услуга, которую мы хотим протестировать, используя restcient в grails.Как настроить тестовые данные для функционального тестирования в Grails?

тест-код должен идти что-то вроде этого ...

class MyControllerSpec extends Specification { 

def setup() { 
    this.dbEntity = new DbEntity("someid123").save(); 
} 

void "Test entity GET"{ 
     given: 
      RestBuilder rest = new RestBuilder() 

     when: "The DB entity service is hit" 
      RestResponse restResponse = rest.post("http://localhost:8080/api/someentity/$id"); 

     then: "A 200 error is sent" 
      restResponse.status == 200 


} 

Проблемы я имею метод установки взрывает на .save(), потому что не спящий режим сеанса. Как я могу манипулировать своей базой данных перед запуском теста?

+0

Вы пытались добавить в тест "setup:" block? – Koloritnij

ответ

0

Вы можете определить метод, названный как «setupData», и вызвать его в «заданном» блоке тестового теста Test GET.

def setupData() { this.dbEntity = new DbEntity("someid123").save(); } 
0

Если вам необходимо загрузить некоторые данные перед каждым испытанием funcional, вы можете создать вспомогательный класс, с @Shared переменных или методов или обоих. Даже вы можете переопределить методы setupSpec в этом классе.

Ваш первый класс не расширяет спецификацию теперь, класс DataLoader (вспомогательный класс).

class MyControllerSpec extends DataLoader { 

    void setup(){ 
     createEntity() 
    } 


    void "Test entity GET"{ 
      given: 
       RestBuilder rest = new RestBuilder() 

      when: "The DB entity service is hit" 
       RestResponse restResponse = rest.post("http://localhost:8080/api/someentity/$dbEntity.id"); 

      then: "A 200 error is sent" 
       restResponse.status == 200 

    } 
} 

И ваш вспомогательный класс является тем, который расширяет Спецификацию, с его методами и переменными @Shared.

import spock.lang.Shared 

class DataLoader extends Specification { 

    @Shared DbEntity dbEntity 

    void createEntity(){ 
     dbEntity = new DbEntity("someid123").save(); 
    } 

} 
Смежные вопросы