【问题标题】:rspec2 acceptance testing with capybara使用 capybara 进行 rspec2 验收测试
【发布时间】:2013-01-14 18:03:07
【问题描述】:

我正在尝试使用 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

任何帮助将不胜感激

【问题讨论】:

    标签: ruby-on-rails-3 capybara rspec2 acceptance-testing


    【解决方案1】:

    @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
    

    【讨论】:

      猜你喜欢
      • 2016-02-06
      • 1970-01-01
      • 1970-01-01
      • 2017-05-18
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多