2013-10-08 65 views
1

我嘗試測試設計用戶身份驗證,這個問題我根據樣本做了所有事情,但是代碼仍然不起作用。Rspec找不到自定義模塊

規格/支持/設計/ devise_support.rb

module ValidUserRequestHelper 
    def sign_in_as_a_valid_user 
     @user ||= Fabricate(:simple_user) 
     post_via_redirect user_session_path, 'user[email]' => @user.email, 'user[password]' => @user.password 
    end 
end 

RSpec.configure do |config| 
    config.include ValidUserRequestHelper, :type => :request 
end 

規格/ spec_helper.rb

Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f } 

然而,當我運行測試,它的呼叫未能`sign_in_as_a_valid_user」

undefined local variable or method `sign_in_as_a_valid_user' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0xc57a0c4> 

我不知道如何調試。

測試代碼是

require 'spec_helper' 

describe User do 

    before do 
     sign_in_as_a_valid_user 
    end 

... 
+0

請分享您的測試代碼。 –

回答

2

當你寫這在你的rspec的配置

RSpec.configure do |config| 
    config.include ValidUserRequestHelper, :type => :request 
end 

你告訴RSpec的僅包括此幫手的要求規範。這些通常位於spec/request。從你的規格示例中得到describe User,我假設你正在編寫一個模型規範,通常位於spec/model。所以在運行規範時,rspec將不包含該規範!

如果你只是刪除:type => :request它將被包括到處。請記住,這種限制通常有很好的理由。例如一個只能使用虛假瀏覽器的幫助程序,就像在請求規範中完成的一樣。

+0

太好了,非常感謝! – user10756

+0

你能建議rspec的簡明手冊嗎? – user10756

+0

不是真的,但你可以在這裏看看生動的例子:https://github.com/phoet/on_ruby – phoet