RSPEC失败/错误:Click_link Artix.title



我在运行RSPEC测试时面临此错误。我尝试过click_link"标题1",然后分配article.greate。

 Failure/Error: click_link article.title
 Capybara::ElementNotFound:
   Unable to find link "Title 1"

comment_spec.rb

require "rails_helper"
describe 'navigate' do
  let(:user) { FactoryGirl.create(:user) }
  let(:article) do
    Article.create(title: "Title 1", description: "Some description", user_id: user.id)
  end
  before do
    login_as(user, :scope => :user)
  end
  describe 'create' do
    before do
      visit articles_path
    end
    it"permits a signed in user to write a review" do
        click_link article.title
        fill_in "Content", with: "An awesome article"
        click_button "Post"
        expect(page).to have_content("An awesome article")
        expect(current_path).to eq(article_path(article.id))
    end
  end
end

规格/工厂/user.rb

FactoryGirl.define do
  sequence :email do |n|
    "test#{n}@example.com"
  end
  factory :user do
    name 'Tester'
    email { generate :email }
    password "asdfasdf"
    password_confirmation "asdfasdf"
  end

编辑:

Article/index.html.erb

      <div class="tab-pane active" id="tab1">
         <% @articles.each do |article| %>
           <%= render 'article', article: article %>
         <% end %>
      </div>

_article.html.erb

<%= link_to article.title, article_path(article) %>

let是懒惰的加载,这意味着直到您调用块才能评估块。

    before do
      article # calls the block
      visit articles_path
    end

一种替代方法是使用不是懒负载的let!

require "rails_helper"
describe 'navigate' do
  let(:user) { FactoryGirl.create(:user) }
  let!(:article) do
    Article.create(title: "Title 1", description: "Some description", user_id: user.id)
  end
  before do
    login_as(user, :scope => :user)
  end
  describe 'create' do
    before do
      visit articles_path
    end
    it"permits a signed in user to write a review" do
        click_link article.title
        fill_in "Content", with: "An awesome article"
        click_button "Post"
        expect(page).to have_content("An awesome article")
        expect(current_path).to eq(article_path(article.id))
    end
  end
end

最新更新