2012-07-05 2 views
0

В моем интеграционном тесте я делаю следующее:Как я могу проверить, хранимые данные внутри интеграционного теста

void testSave() { 
    def controller = new BookController() 
    controller.params.title = "Awesome Book" 
    controller.params.pages = 1000 
    controller.save() 
    // i want to check book data here 
} 

Как я могу извлечь Book мой контроллер сохранялся и убедитесь, что title == "Awesome Book" и pages == 1000? Могу ли я каким-либо образом получить доступ к переменной bookInstance в моем контроллере из теста?

Я не могу предположить, что Book.get(1) даст мне правильный Book, потому что в базе данных будут загрузочные данные. Контроллер перенаправляет на полностью связанную страницу Book, поэтому я не могу получить id из URL-адреса. Единственное, что я могу думать о том, чтобы сделать что-то вроде этого:

void testSave() { 
    def oldIdList = Book.list()*.id 
    // set up the parameters and call controller.save() 
    def insertedId = Book.list()*.id - oldIdList 
    // check Book.get(insertedId) properties 
} 

, но я надеюсь, что есть лучший путь ...

ответ

2

Предполагая, что вы используете Grails 2.0.x вы можете посмотреть вверх книга по любому из ее свойств с использованием методов findBy *:

def book = Book.findByTitle("Awesome Book") 
assertNotNull book 
+1

Динамические искатели не являются 2.0-специфическими –

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