首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >水豚的rspec2验收测试

水豚的rspec2验收测试
EN

Stack Overflow用户
提问于 2013-01-15 02:03:08
回答 1查看 225关注 0票数 0

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

这是我的特色

代码语言:javascript
复制
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

但是我得到了这个错误

代码语言:javascript
复制
undefined method `env' for nil:NilClass

以下是我正在使用的gem

代码语言:javascript
复制
gem "rspec-rails", "~> 2.0"
gem 'database_cleaner'
gem 'capybara'
gem "factory_girl_rails", ">= 4.1.0"
gem 'rspec-example_steps'

使用Guard/Spork

任何帮助都将不胜感激

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-15 02:11:47

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

水豚启动一个浏览器,你必须告诉它去你的登录页面,并通过相同的步骤登录,你会做在浏览器中。

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

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14324016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档