Ruby on rails 3 -使用capybara进行rspec2验收测试



我试图实现一个功能与rspec2和rails3,基本上我有一个Post模型,我试图通过创建一个Post测试(我使用设备进行身份验证)

this is my feature

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

如有任何帮助,不胜感激

@request为控制测试变量。这不是你想要的。事实上,在capybara规格中,您不需要指定设计映射,也不能使用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

相关内容

  • 没有找到相关文章

最新更新