测试模型与RSpec使用设计 [英] Testing models with RSpec using devise

查看:147
本文介绍了测试模型与RSpec使用设计的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在rails应用程序中使用devise进行身份验证,我无法使用RSpec测试任何型号。控制器规格工作正常,但我无法使模型规格正常工作。



我收到此错误:

 失败:

1)组应该创建新组

失败/错误:无法从backtrace找到匹配行
NoMethodError:
未定义的方法`env'为nil:NilClass
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/activesupport-3.0.7/lib/active_support /whiny_nil.rb:48:in`method_missing'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/devise-1.4.2/lib/devise/test_helpers.rb: 25:在`setup_controller_for_warden'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-rails-2.5.0/lib/rspec/rails/adapters.rb:11 :在'block(2级)'在设置'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/ hooks.rb:29:在`instance_eval'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/hooks .rb:29:在`run_in'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p18 0 / gems / rspec-core-2.5.2 / lib / rspec / core / hooks.rb:64:在`block in run_all'
#/home/hrvoje/.rvm/gems/ruby-1.9.2 -p180 / gems / rspec-core-2.5.2 / lib / rspec / core / hooks.rb:64:在each
#/home/hrvoje/.rvm/gems/ruby-1.9.2- p180 / gems / rspec-core-2.5.2 / lib / rspec / core / hooks.rb:64:在`run_all'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180 /gems/rspec-core-2.5.2/lib/rspec/core/hooks.rb:110:in`run_hook'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/ gems / rspec-core-2.5.2 / lib / rspec / core / example_group.rb:191:在``eval_before_eachs'中
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180 /gems/rspec-core-2.5.2/lib/rspec/core/example_group.rb:191:in`each'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/ gems / rspec-core-2.5.2 / lib / rspec / core / example_group.rb:191:在`eval_before_eachs'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems /rspec-core-2.5.2/lib/rspec/core/example.rb:144:in`run_before_each'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/ rspec的核 - 2.5.2 / LIB / rspec的/核心/ E xample.rb:48:在`block(2级)'运行'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib /rspec/core/example.rb:106:in`with_around_hooks'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/ rspec / core / example.rb:46:在`block in run'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib /rspec/core/example.rb:99:in`block in with_pending_capture'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/ lib / rspec / core / example.rb:98:在`catch'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib /rspec/core/example.rb:98:in`with_pending_capture'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/ rspec / core / example.rb:45:在`run'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec /core/example_group.rb:262:in`block in run_examples'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/ rspec的/型芯/ example_group.r b:258:在`map'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/example_group.rb :258:在`run_examples'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/example_group.rb: 232:在`run'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/command_line.rb:27 :在`block(2级)'运行'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/ command_line.rb:27:在`map'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/command_line .rb:27:在`block in run'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/记者:12:在'报告'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/command_line .rb:24:在`run'
#/home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/runner。 rb:55:在`run_in_process'
#/home/hrvoje/.rvm /gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/runner.rb:46:in`run'
#/home/hrvoje/.rvm/ gems / ruby​​-1.9.2-p180 / gems / rspec-core-2.5.2 / lib / rspec / core / runner.rb:10:在`block in autorun'
/ pre>

我已经包括

  config.include Devise ::我的spec_helper.rb中的TestHelpers 


这是我的模型测试文件

  require'spec_helper'

describe Group do

before:each do
@group = Factory.build(:group)
end

它应该创建新组do
Group.create!(@ group)
end
end

这是我的factory.rb文件

  Factory.define:group do | group | 
group.name示例组
group.description示例描述
end

如何解决这个问题?

解决方案

  config.include设计: :TestHelpers,:type => :控制器


I am using devise for authentication in my rails app and I'm unable to test any model with RSpec. Controller specs work fine, but I'm unable to make model specs work.

I am getting this error:

Failures:

1) Group should create new group

Failure/Error: Unable to find matching line from backtrace
NoMethodError:
   undefined method `env' for nil:NilClass
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/activesupport-3.0.7/lib/active_support/whiny_nil.rb:48:in `method_missing'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/devise-1.4.2/lib/devise/test_helpers.rb:25:in `setup_controller_for_warden'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-rails-2.5.0/lib/rspec/rails/adapters.rb:11:in `block (2 levels) in setup'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/hooks.rb:29:in `instance_eval'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/hooks.rb:29:in `run_in'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/hooks.rb:64:in `block in run_all'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/hooks.rb:64:in `each'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/hooks.rb:64:in `run_all'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/hooks.rb:110:in `run_hook'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/example_group.rb:191:in `block in eval_before_eachs'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/example_group.rb:191:in `each'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/example_group.rb:191:in `eval_before_eachs'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/example.rb:144:in `run_before_each'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/example.rb:48:in `block (2 levels) in run'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/example.rb:106:in `with_around_hooks'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/example.rb:46:in `block in run'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/example.rb:99:in `block in with_pending_capture'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/example.rb:98:in `catch'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/example.rb:98:in `with_pending_capture'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/example.rb:45:in `run'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/example_group.rb:262:in `block in run_examples'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/example_group.rb:258:in `map'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/example_group.rb:258:in `run_examples'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/example_group.rb:232:in `run'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/command_line.rb:27:in `block (2 levels) in run'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/command_line.rb:27:in `map'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/command_line.rb:27:in `block in run'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/reporter.rb:12:in `report'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/command_line.rb:24:in `run'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/runner.rb:55:in `run_in_process'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/runner.rb:46:in `run'
 # /home/hrvoje/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/runner.rb:10:in `block in autorun'

I have included

  config.include Devise::TestHelpers

in my spec_helper.rb. Here is my model test file

require 'spec_helper'

describe Group do

  before :each do 
    @group = Factory.build(:group)
  end 

  it "should create new group" do
    Group.create!(@group)
  end
end

This is my factories.rb file

Factory.define :group do |group|
  group.name "Example group"
  group.description "Example description"
end

How to fix this?

解决方案

config.include Devise::TestHelpers, :type => :controller

这篇关于测试模型与RSpec使用设计的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆