У меня проблемы с запуском примеров rspec в цикле.
describe "GET all providers" do
let(:current_user) { Factory(:user) }
[:twitter, :facebook, :google_oauth2].each do |provider|
before :each do
current_user.confirm!
sign_in current_user
request.env['devise.mapping'] = Devise.mappings[:user]
request.env["omniauth.auth"] = OmniAuth.config.add_mock provider, {
:uid => '123456789',
:info => {
:email => current_user.email
}
}
end
it 'should add the authorization' do
get provider # method to create the authorization
authorization = Authorization.where(:provider => request.env["omniauth.auth"][:provider], :uid => request.env["omniauth.auth"][:uid]).first
current_user.authorizations.should include authorization
end
end
end
В настоящее время все эти примеры проходят.проблема заключается в том, что current_user - это новый пользовательский экземпляр на каждой итерации цикла, несмотря на запоминание метода current_user
.так что, если я добавлю тест для current_user.authorizations.count.should == 3
, он потерпит неудачу.
это стало меньше необходимости фактически проверять его, и больше понимания, почему он ведет себя не так, как я ожидаю.не следует ли let(:current_user) { Factory(:user) }
сохранять один и тот же пользовательский экземпляр во всех примерах?