grails - 测试受 Spring 安全保护的页面

标签 grails spock geb

我正在尝试使用Geb测试我的主页受Spring Security的保护。

这是我的测试:

void "Unauthenticated user is redirected to login page."() {
given:
    to HomePage
    via AuthPage

expect:
    at AuthPage

}

当我尝试运行此测试时,geb说我的断言失败。它说我在AuthPage中,而不在HomePage中。

这是堆栈跟踪:
| Failure:  Unauthenticated user is redirected to login page.(home.HomePageSpec)
|  Assertion failed: 
title ==~ /Home/
|     |
Login false
at pages.home.HomePage._clinit__closure1(HomePage.groovy:8)
at geb.Page.verifyThisPageAtOnly(Page.groovy:165)
at geb.Page.verifyAt(Page.groovy:133)
at geb.Browser.doAt(Browser.groovy:358)
at geb.Browser.at(Browser.groovy:289)
at geb.Browser.to(Browser.groovy:436)
at geb.Browser.to(Browser.groovy:412)
at geb.spock.GebSpec.methodMissing(GebSpec.groovy:51)
at home.HomePageSpec.Unauthenticated user is redirected to login page.(HomePageSpec.groovy:22)

但这是我期望的行为!为什么会失败?

最佳答案

您可以使用针对涉及重定向的情况引入的via(),就像to()一样,它会转到页面url,但不会“检查”。因此您的测试将如下所示:

void "Unauthenticated user is redirected to login page."() {
    when: 
    via HomePage

    then:
    at AuthPage
}

关于grails - 测试受 Spring 安全保护的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23537979/

相关文章:

grails - 如何通过遍历数组或映射来保存多行数据?

Grails 集成测试在测试应用程序中不起作用,但单独启动时运行正常

Geb:text() 与 value()

testing - 如何在 Geb (WebDriver) 中提交没有提交按钮的表单

rest - Grails 2.4.3 : Consume a REST Service

grails - 从 Grails 1.0.3 升级到 1.3.5

json - 在 Grails 2.3.1 中从 Controller 渲染 JSON 响应

spring - 使用@WebFluxTest 测试 RouterFunction

unit-testing - Grails 单元测试面临的问题

unit-testing - grails 没有找到 geb 功能测试