2017-11-05 3 views
0

記事IDページに対応するdivブロックを具体的に見つける必要のあるrspecテストがあります。記事IDに対応し、破棄するリンクを表すグリフコンを見つけます/編集と記事。私はインデックスページ上の記事のリストを持っているので、私はCSSセレクターに固有である必要があります。しかし、私はこれを行うための解決策を見つけることができません。Ruby on Rails + Rspec:インスタンス変数を含むCSSセレクタの構文

1)は、部分的記事内の各記事にIDタグを追加し、部分的

記事「内」を使用して、特定のdivを呼び出す:私は、以下の方法を試してみました

<div class = "row" id="<%= article.id %>" > 
....more code.... 
</div> 

スペック/機能/ article_spec.rb

describe 'navigate' do 

    let!(:user) { FactoryGirl.create(:user) } 
    let!(:article) { FactoryGirl.create(:article) } 

    before do 
    login_as(user, :scope => :user) 
    end 

    describe 'edit' do 

    before do 
     @article_to_edit = Article.create(title: 'Article to edit', summary: 'Summary of article to edit', description: 'Test to edit this article', user_id: user.id) 
    end 

    it 'edit and delete icon is visible to article owner from index page' do 
     visit articles_path 
     within '#{@article_to_edit.id}' do 
     expect(page).to have_css('.glyphicon-pencil') 
     expect(page).to have_css('.glyphicon-trash') 
     end 

    end 

end 

2)

expect(page).to have_link('', href: "/articles/#{@article_to_edit.friendly_id}/edit") 
expect(page).to have_link('', href: "/articles/#{@article_to_edit.friendly_id}") 

答えて

0

スティング補間のみを二重引用符付き文字列内で動作品の特定のhrefのリンクを見つけるために、コードの下でのブロック「内」代入します。

ちょうどあなたがあなたの質問に投稿されたコード例内

within "#{@article_to_edit.id}" do 

within '#{@article_to_edit.id}' do 

を変更。 URLを作成する場所で同じことを実行してください。articles/#{@article_to_edit.friendly_id}...

+0

こんにちは、ありがとうございます。私はそれを "#article_#{article_to_edit.id}"に変更しました。より具体的で重複IDの問題を防ぎました。私は 'before'ステートメントでインスタンス変数article_to_editを作成したので、記事IDは各テストで増分されます。つまり、そのテストで実際に使用されている記事IDは何か分かりません。 @ article_to_edit.idを呼び出すだけで十分だと思いました。 – doyz

+0

私はvisit_articles_pathの後にput page.htmlを配置してデバッグしました.cssセレクタは '#article_28'でなければなりませんが、テストでは '#article_17'が出力されます – doyz

+0

データベースのクリーナー戦略と順序によってレコードのIDが変わりますあなたの仕様が実行されます( 'random'がデフォルトです)。したがって、あなたは特定のIDに頼るべきではありません:それは'#article_28'でなければならないセレクタが '#article_17 'であることを意味します。 ID 28が含まれていますか?どのように確認しましたか – spickermann

関連する問題