assert_select确认链接在

时间:2016-04-13 03:31:59

标签: ruby-on-rails ruby-on-rails-4 minitest

背景

我想为Ruby on Rails应用程序编写以下测试。

  1. 以用户身份登录。
  2. 访问编辑用户页面。
  3. 点击导航中的链接转到“关于我们”页面。
  4. 实际访问“关于我们”页面并确认其正确的模板。
  5. 原因是我发现了一个错误,关于我们的链接我可以参考' / welcome / about /'所以它转到/ users / welcome / about哪个不存在。

    我的代码

    我的测试代码如下:

     test 'welcome page from user page works' do
        log_in_as(@user)
        get edit_user_path(@user)
        assert_select "a", { :text=> "About Us" }
        click_on ("About Us")
        assert_template 'welcome/about'
      end
    

    错误消息

     ERROR["test_welcome_page_from_user_page_works", WelcomePageTest, 1.42307711095782]
     test_welcome_page_from_user_page_works#WelcomePageTest (1.42s)
    Capybara::ElementNotFound:         Capybara::ElementNotFound: Unable to find link or button "About Us"
            test/integration/welcome_page_test.rb:13:in `block in <class:WelcomePageTest>'
    
    Finished in 1.42605s
    1 tests, 1 assertions, 0 failures, 1 errors, 0 skips
    

    由于有1个断言,这让我认为链接存在过去的断言但是click_link无法找到它?

    编辑这是我测试的最终代码:

      test 'welcome page from user page works' do
        log_in_as(@user)
        visit edit_user_path(@user)
        click_on ("About Us")
        assert_template 'welcome/about'
      end
    

    注意我也改变了刚刚硬编码的路线:

      get     'about'  => 'welcome#about'
    

1 个答案:

答案 0 :(得分:0)

对于水豚,请使用visit方法代替get

visit edit_user_path(@user)