首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >请求规范+ Rspec2 + Spork/Guard

请求规范+ Rspec2 + Spork/Guard
EN

Stack Overflow用户
提问于 2013-02-28 19:46:48
回答 2查看 320关注 0票数 1

我已经设置了Rspec2 + Spork +警卫器+设计

我的文件如下

代码语言:javascript
复制
#spec_helper.rb
Spork.prefork do
  #code
  Dir[Rails.root.join('spec/support/**/*.rb')].each {|f| require f}
  RSpec.configure do |config|
    config.extend ControllerMacros, :type => :controller 
  end 
end

Spork.each_run do
  # This code will be run each time you run your specs.
  FactoryGirl.reload
  include ControllerMacros
end

#spec/support/controller_macros.rb
module ControllerMacros
    def login_user
      before(:each) do
        @request.env["devise.mapping"] = Devise.mapping[:user]
        user = FactoryGirl.create(:user)
        sign_in user
      end
    end
end

#spec/support/devise.rb
Spec.configure do |config|
    config.include Devise::TestHelpers, :type => :controller
end

在我的请求规范中

代码语言:javascript
复制
#spec/features/documents_spec.rb
require 'spec_helper'

describe "Documents" do

  login_user

  describe "GET /documents" do
    it "should display document name as sameera CV" do
      #spec code
    end
  end
end

当我运行bundle exec guard

代码语言:javascript
复制
  1) Documents GET /documents should display document name as sameera CV
     Failure/Error: Unable to find matching line from backtrace
     NoMethodError:
       undefined method `env' for nil:NilClass
     # ./spec/support/controller_macros.rb:4:in `block in login_user'

到目前为止,我已经通过谷歌做了很多修复工作,似乎没有什么能奏效,有人能帮我吗?)

我上了

  • rails 3.2.9
  • rspec 2.12.0
  • 设计2.2.3

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2013-02-28 19:52:42

尝试将@request.env["devise.mapping"] = Devise.mapping[:user]更改为spec/support/controller_macros.rb中的request.env["devise.mapping"] = Devise.mapping[:user]

票数 1
EN

Stack Overflow用户

发布于 2013-03-01 04:31:13

在这里,我回答了我自己的问题,我找到了一个解决我提出的问题的办法。

以下是我所做的步骤

1)从支持目录中删除controller_macros.rbdevise.rb

2)从ControllerMacros中删除spec_helper.rb引用

3)将以下代码添加到

代码语言:javascript
复制
#spec/features/documents_spec.rb
before(:each) do
   user = FactoryGirl.create(:user)
   visit root_path
   fill_in 'user_email', :with => user.email
   fill_in 'user_password', :with => user.password
   click_button 'Sign in'
end

我确信应该有一种更优雅的方法(如describe中所描述的),但这是可行的:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15144315

复制
相关文章

相似问题

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