Ruby on rails 断言\u选择重定向后不工作
Ruby on rails 断言\u选择重定向后不工作,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.2,functional-testing,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.2,Functional Testing,assert\u选择是否可以在assert\u重定向到后工作?我有以下控制器操作,我得到一个失败 test "get switchboard" do ... assert_redirected_to employees_url # success assert_select 'div' # fail end assert\u select的工作原理与中所述的相同 我假设您正试图在重定向到的页面上的某个元素上执行assert\u select。问题是重定向的路由实际上没有被渲染 如果
assert\u选择
是否可以在assert\u重定向到
后工作?我有以下控制器操作,我得到一个失败
test "get switchboard" do
...
assert_redirected_to employees_url # success
assert_select 'div' # fail
end
assert\u select
的工作原理与中所述的相同
我假设您正试图在重定向到的页面上的某个元素上执行assert\u select
。问题是重定向的路由实际上没有被渲染
如果我是你,我会做的第一件事就是扔一个绑定。在assert\u选择之前撬开并查看响应。body
将显示实际渲染的内容。我猜你会看到这样的情况:
<html><body>You are being <a href=\"https://bigoldtest.net/as/1/oauth_provider_credentials?response_code=success\">redirected</a>.</body></html>"
您正在被删除。”
而不是您将被重定向到的实际页面。这个问题很老,但我会继续回答,因为我遇到了类似的问题。assert\u select
可以在重定向后工作,但您必须首先告诉测试“遵循”重定向。因此,在您的情况下,您可以这样做:
test "get switchboard" do
...
assert_redirected_to employees_url # redirected, not "success" per se
follow_redirect! # this is what you need to do
assert_response :success # if you still want to...
assert_select 'div'
end
这并不能回答你的问题,但我会尝试在那里只使用一个断言。如果重定向到断言失败,选择一个将不会被报告…@Nobita如评论中所示,重定向到
断言通过。在我添加到断言选择之前,它也通过了。我知道,我读到了。这只是对尝试每个测试只有一个断言。假设重定向的\u-to失败了。你永远不会知道选择的一个是否会失败。我相信在assert\u-redirected\u-to
行之后放置可能会有帮助…我想我应该提到它,以防其他人有这个问题。assert\u重定向了_to
在重定向发生的任何事情之后都会出现……这就是为什么rails制造商在单词后面加上“ed”结尾……以帮助它更有意义。