我刚刚了解了RSpec和Cabybara有多酷,现在正努力学习编写实际测试.

我试图判断点击一个链接后,是否有一个重定向到特定页面.


1) I have a page /projects/list
        - I have an anchor with html "Back" and it links to /projects/show

Below is the test i wrote in rspec

describe "Sample" do
  describe "GET /projects/list" do
    it "sample test" do
      visit "/projects/list"
      click_link "Back"
      assert_redirected_to "/projects/show" 
    end
  end
end

测试失败,出现如下失败消息

    Failure/Error: assert_redirected_to "/projects/show"
     ArgumentError:
       @request must be an ActionDispatch::Request

请建议我应该如何测试重定向,以及我做错了什么?

推荐答案

试试current_path.should == "/projects/show"

Capybara还为完全限定的URL实现了一个current_url方法.

更多信息请点击docs.

EDIT

水豚现在有一个名为have_current_path的RSpec匹配器,你可以使用它,比如:expect(page).to have_current_path(some_other_page_path)(谢谢@bjliu)

Ruby-on-rails相关问答推荐

在PDF生成中渲染 colored颜色

确定当前太平洋时区是PST还是PDT

Rails引擎importmap Uncaught ReferenceError:未定义tinymce

Rails 7,返回具有两个单独条件的活动记录关联,一个在父级,一个在子级

如何使用 Rails 语义记录器记录整个请求(标头、正文等)

BigDecimals 的总和最终成为整数 [Ruby on Rails]

如何确定 Rails 是从 CLI、控制台还是作为服务器运行?

在命名空间内设计

更改 form_for rails 3.1 生成的 html 表单 ID

是否有不涉及删除 Gemfile.lock 的在任何源中找不到 *gem*错误的修复?

使用 Rails 时,在 Ruby 中处理常量的最佳方法是什么?

link_to 将参数与 url 一起发送并在目标页面上抓取它们

Rails:带参数的 URL/路径

我可以在 twitter-bootstrap popover 数据内容中使用 html 标签吗?

您如何访问设计控制器?

长期运行项目中的 Rebase Rails 迁移

如何更改 Rails 3 控制器中视图文件的默认路径?

用于在多行上链接调用的 Ruby 约定

如何在 Rails 3 中订购包含的元素

Rails:为什么 with_exclusive_scope 受保护?关于如何使用它的任何好的做法?