grails - Grails Geb 功能测试,setupData() 方法,正在创建和回滚数据,但未渲染
问题描述
我一直在关注这里的文档,特别是第 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() 方法是从测试方法中调用的。那么它应该在测试后回滚。在这种情况下,正在创建用户,并且我确定因为第二个断言语句正在通过,所以测试仅在最后一行失败。但是由于某种原因,用户数据的渲染失败
当我将它从 void setupData() 更改为 void setup() 时,测试通过了,但事务当然不会回滚。这是使用 void setupData() 方法失败时测试的错误报告的样子
$("h1.greeting").text() == "Up match test"
| | | |
[] 400 null false
我正在使用 Grails 3.3.9 这只是对实际问题的简化表示,出于专业原因,我无法分享完整的代码。
解决方案
推荐阅读
- ios - iOS 上的 userDomainMask 和 localDomainMask 等 FileManager.SearchPathDomainMask 有什么区别?
- mysql - 我在 SQL 中一周大。我不明白这个错误,“第 1 行的错误 1054 (42S22):‘字段列表’中的未知列‘S.hacker_id’”
- javascript - 如何从 TMDB API 中提取更多数据?
- javascript - 使用 JSDoc 记录数组数组的最佳方法是什么?
- reactjs - 用 Jest 测试一个 React 组件
- regex - Pandas 使用正则表达式有条件地更改单元格
- javascript - Javascript:console.log 时间
- php - 带有 Laravel 的 Vue js - 登录表单安全性
- javascript - npm 警告错误
- python - Python从输入文件中绘制数据