我无法将我的测试与 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 文件。