Функциональный тест Grails Geb, метод setupData (), данные создаются и откатываются, но не отображаются - PullRequest
0 голосов
/ 10 марта 2020

Я следовал документации здесь , в частности, раздел 15.2. Насколько я понимаю из этой документации, интеграционные тесты автоматически откатываются после каждого теста при условии следующих импортов и аннотаций

import grails.testing.mixin.integration.Integration
import grails.gorm.transactions.*
import spock.lang.*

@Integration
@Rollback

А также при условии, что метод setupData () вызывается из метода теста как только операции изнутри теста откатываются. Мой тестовый класс выглядит следующим образом:

package com.something.DashboardTest

import com.something.User

import geb.spock.GebSpec
import grails.testing.mixin.integration.Integration
import grails.gorm.transactions.*
import grails.transaction.*

import com.something.pages.DashboardPage

@Integration
@Rollback
class DashboardSpec extends GebSpec {

    void setupData() {
        User testUser = new User(
                fName: "Finn",
                lName: "Murtons",
                email: "finn@gmail.com",

        )
        assert testUser.validate() == true
        testUser.save()
    }

    def cleanup() {
    }


    void "when the test is executed..."() {
        when:
        setupData()

        and:
        to DashboardPage

        then:
        at DashboardPage
        assert User.getUserByEmail("finn@gmail.com").fName == "Finn" 
        assert $("h1.greeting$userId", 0).text() == "Hello Finn Murtons"
    }
}

Согласно документации, если метод setupData () вызывается из метода теста. затем он должен быть откатан после теста. В этом случае пользователь создается, и я уверен, потому что второй последний оператор assert проходит, тест не проходит только в последней строке. Но рендеринг пользовательских данных по какой-то причине завершается неудачно

Когда я изменяю их с void setupData () на void setup (), тест проходит, но, конечно, транзакции не откатываются. Вот как выглядит отчет об ошибке для теста, когда он терпит неудачу при использовании подхода void setupData ()

$("h1.greeting").text() == "Up match test"
|         |        |     |
[]       400       null false

Я использую Grails 3.3.9 Это просто упрощенное представление фактической проблемы, я не могу поделиться полным кодом по профессиональным причинам.

...