여기에 잘못된 트리를 짖을 수도 있지만, 레일 뷰 스펙을위한 룩업 테이블을 작성하려고합니다. 나는 '뷰 스펙의 링크를위한 룩업 테이블 작성하기
require 'rails_helper'
RSpec.describe 'layouts/_navigation', :type => :view do
context 'everyone' do
before :each do
allow(view).to receive(:user_signed_in?).and_return(false)
render
end
it {should have_valid_link(I18n.t(:start_reading), stories_path)}
it {should have_valid_link(I18n.t(:unknown_tales), root_path)}
end
end
: 나는 이것을 대체 할 수 있도록하고 싶습니다 무엇
require 'rails_helper'
RSpec.describe 'layouts/_navigation', :type => :view do
context 'everyone' do
before :each do
allow(view).to receive(:user_signed_in?).and_return(false)
render
end
it 'shows links to start reading' do
expect(rendered).to have_link(I18n.t(:start_reading), :href => stories_path)
end
it 'shows links to home page' do
expect(rendered).to have_link(I18n.t(:unknown_tales), root_path)
end
end
end
이 같은 것입니다 :
는 지금 내가 이렇게 보이는 뷰 스펙을 가지고 다음과 같이 찔러 보았지만 작동하지 않습니다.
RSpec::Matchers.define :have_valid_link do |title, path|
description { "have valid link to #{path} on #{title}" }
match do |rendered|
expect(rendered).to have_link(title, :href => path)
end
end
잘 작동하지 않는지는 확실하지 않습니다. beca use 나는 잘못하고있다, 또는 shoulda matchers가 view와 함께 작동하도록 설계되지 않았다면.
감사
이 답변 주셔서 감사합니다,하지만 '아무튼 일하지 마라. 나는'render '의 값이'everyone'이라는 문자열이기 때문에'Reading'에 대한 유효한 링크를 가지고 있거나'Read Reading을 읽을 때'모두가'expected "라고 말하고 있습니다. 렌더링 된 뷰에 액세스하는 또 다른 방법이 있습니까? –
내 대답에 명시된대로 코드를 시도 했습니까? 'subject {rendered} '를 지정하지 않으면보고있는 동작 (즉, "everyone"의 암시적인'subject')을 얻을 수 있습니다. –
죄송합니다. 제 상태가 좋지 않습니다.'subject {rendered}'행을 추가하지 못했습니다. 너는 별이야, 고마워. –