2016-07-10 6 views
0

현재 특정 경로를 방문하는 기능이없는 테스트가 있습니다. 이 테스트는 요청 사양이며 이것은 첫 번째 요구 사양이라고 말할 수있는 한 기능 테스트와 비슷하며 사용자 capybara는 visitfill_in과 같은 작업을 수행 할 수 있습니다. 하지만 지금 당장이 요청 사양을 통해 경로를 방문 할 수는 없습니다. 요청 사양에 대해 알아야 할 것이 있습니까? 내 코드를 게시하고 이상한 것을 본다.정의되지 않은 메소드`visit '- RSpec

SPEC :

require "spec_helper" 

describe "Mailchimp" do 
    describe "Manage list" do 
    it "adds new subscriber to list" do 
     VCR.use_cassette "mailchimp/subscriber" do 
     visit new_subscriber_path 
     expect { 
      fill_in "first_name", with: "John" 
      fill_in "last_name", with: "Mayer" 
      fill_in "phone_number", with: "61615551233" 
      fill_in "email", with: "[email protected]" 
      click_button "Sign Up" 
     }.to change(Subscriber, :count).by(1) 
     end 
    end 
    end 
end 

당신이 무엇을 볼 필요가 있다면 알려주세요. 고맙습니다!

+0

어떻게됩니까? – MageeWorld

+0

아무 것도. 같은 오류. – Bitwise

+0

r 스펙 전문가는 아니지만 모든 RSpec commaands가 rspec을 시작하기 위해 'RSpec.something' "do"블록으로 시작하지는 않습니까? 당신이 VCR과 독립적이라면 나는 또한 작동하는지 알겠습니까? – MageeWorld

답변

2

요청 스펙은 이전 RSpec 버전의 기능 스펙과 동일한 것으로 사용되었지만 이후 변경된 사항이 있습니다.

요청 사양은 HTTP 요청을 통해 전체 스택에 도달하고 response의 세부 정보를 검사 할 수 있도록 설계되었습니다. get, post, patchdelete과 같은 메서드를 사용하여 응용 프로그램과 상호 작용할 수 있습니다.

예 요구 사양 :

get "https://stackoverflow.com/users/#{user.id}" 
expect(response.body).to include user.full_name 

기능 사양이 카피 바라 의해 구동 및 인터페이스의 요소를 통해 전체 스택을 공격 할 수있다. 특정 URL을 방문하려면 visit을 사용합니다.

귀하의 질문에는 기능 사양의 예가 포함되어 있으므로이 답변에 반영 할 필요가 없습니다. 귀하의 코드와 관련된 조언은 인터페이스를 검사하여 데이터베이스를 변경하는 방법이 아닌 인터페이스를 변경하는 것입니다.

(그래서 나는 결국 코드를 ​​에코 것 같아요. :)) 당신이 'rails_helper'에서 'spec_helper'을 변경하는 경우

require "rails_helper" 

feature "Mailchimp" do 
    describe "Manage list" do 
    scenario "adds new subscriber to list" do 
     VCR.use_cassette "mailchimp/subscriber" do 
     visit new_subscriber_path 
     fill_in "first_name", with: "John" 
     fill_in "last_name", with: "Mayer" 
     fill_in "phone_number", with: "61615551233" 
     fill_in "email", with: "[email protected]" 
     click_button "Sign Up" 
     expect(page).to have_content "You have successfully subscribed to our service" 
     end 
    end 
    end 
end 
+0

크리스에게 도움을 주셔서 감사합니다! 나는 한 가지 질문 만 가지고있다. 나는 Tut by Rails 캐스팅을 사용하고 있었고 그의 테스트에서 카피 바라 컨벤션을 사용하고 있습니다. 튜토리얼 측면에서 잘못 되었습니까? 나는 그것으로 조금 혼란스러워합니다. – Bitwise

+0

아하 지금 업데이트 된 답변을 보았습니다 – Bitwise

+0

Railscasts는 여전히 가치가 있지만 천천히 구식이되기 때문에 조심해야합니다. 당신이 말하는 Railscast를 알고 있다고 생각합니다. 그렇습니다. scellecast가 기록 된 이후 RSpec의이 부분이 변경되었습니다. –

관련 문제