Rails からテストを切り離すのに問題があります。たとえば、current_user
以下のヘルパーで呼び出されるメソッド (Devise から) をスタブする方法は?
ヘルパー モジュール:
module UsersOmniauthCallbacksHelper
def socialmedia_name(account)
name = current_user.send(account)['info']['name']
name = current_user.name if name.blank?
name
end
end
テスト
require_relative '../../app/helpers/users_omniauth_callbacks_helper.rb'
describe 'UsersOmniauthCallbacksHelper' do
include UsersOmniauthCallbacksHelper
describe '#socialmedia_name(account)' do
it 'should return the users name listed by the social media provider when that name is provided' do
#once I've done away spec_helper, this next line ain't gonna fly.
helper.stub(:current_user) { FactoryGirl.create(:user, facebook: {"info"=>{"name"=>"Mark Zuckerberg"}}) }
socialmedia_name('facebook').should == "Mark Zuckerberg"
end
end
end
current_user
クラスで使用されるメソッドをスタブするにはどうすればよいですか?
Rails をロードしていた場合でも、テストでhelper.stub(:current_user)
. しかし、spec_helper ファイルを読み込んでいないので、当然のことながら、これは機能しません。