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”结尾……以帮助它更有意义。