0

rspec2 と rails3 で機能を実装しようとしています。基本的に、Post を作成してテストしようとしている Post モデルがあります (認証にデバイスを使用しています)。

これが私の特徴です

spec/acceptance/new_post_feature_spec.rb

require 'spec_helper'
require 'rspec/example_steps'

feature "Creating a new post" do
  include Devise::TestHelpers
  before(:each) do
    @request.env["devise.mapping"] = Devise.mappings[:user]
    user = FactoryGirl.create(:user)
    sign_in user
  end

  Steps "Add a new post" do
    page.visit "/posts"
    page.should have_content("New Post")
  end
end

しかし、私はこのエラーが発生しています

undefined method `env' for nil:NilClass

以下は私が使用している宝石です

gem "rspec-rails", "~> 2.0"
gem 'database_cleaner'
gem 'capybara'
gem "factory_girl_rails", ">= 4.1.0"
gem 'rspec-example_steps'

Guard/Spork

任意の助けをいただければ幸いです

4

1 に答える 1

1

@requestコントローラーのテスト変数です。それはあなたがここで望むものではありません。実際、カピバラの仕様では、devise マッピングを指定する必要はなく、使用できませんsign_in

Capybara はブラウザーを起動します。ログイン ページに移動し、ブラウザーで行うのと同じ手順でサインインするように指示する必要があります。

これを試してください: (いくつかの入力とボタンの名前を変更する必要があるかもしれません)

let(:user) { FactoryGirl.create(:user) }
before(:each) do
  page.visit new_user_session_path
  # note: use the email/password input names below if yours are different
  page.fill_in "user[email]", :with => user.email 
  page.fill_in "user[password]", :with => user.password
  page.click_button "Sign in"
end
于 2013-01-14T18:11:47.410 に答える