2013-01-14 37 views
0

我试图实现与rspec2和Rails3中一个特点,基本上我有我试图创建一个帖子来测试Post模型的测试(我使用认证设备)rspec2验收与水豚

这是我的特点

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

任何帮助,将理解

回答

1

@request是控制器测试变量。这不是你想要的。事实上,在水豚规格中,您不需要指定设计映射,也不能使用sign_in

水豚触发浏览器,你必须告诉它进入你的登录页面并通过你在浏览器中做的相同步骤登录。

试试这个:(您可能需要更改一些输入和按钮名称)

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 
+0

作品完美:)非常感谢 – sameera207