2016-07-10 11 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コマンドがrspecを起動する 'RSpec.something '" do'ブロックから始まっているわけではありませんか?私はあなたがVCRとは独立していれば私が働くかどうかも分かりますか? – MageeWorld

答えて

2

要求仕様は以前のバージョンのRSpecの機能仕様と同じものであったが、その後は変更されている。

リクエスト仕様は、HTTP要求によって完全なスタックにヒットし、responseの詳細を調べるように設計されています。アプリケーションと対話するには、get,postpatch、およびdeleteのようなメソッドを使用します。

例要求仕様:

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

あなたのお手伝いをありがとうクリス!私はちょうど1つの質問があります。私はTut by Railsのキャストを使用していました。彼は明らかにキャピバラの慣行をテストに使っています。チュートリアルの面でこれは間違っていましたか?私はそれでちょっと混乱していると思う。 – Bitwise

+0

ああ更新された回答が今すぐ表示されます – Bitwise

+0

Railscastsは依然として非常に貴重ですが、ゆっくりと古くなってきているので注意が必要です。私はRailscastがあなたに言及しているかを知っていると思います。はい、Scellecastが記録されてからRSpecのこの部分が変更されました。 –

関連する問題