Я пытаюсь сушить спецификации спецификации RSpec, используя общие контексты. Я хотел бы поделиться let
переменными между общими контекстами, чтобы они наследовали и распространялись друг от друга.Как передать RSpec переменные между общими контекстами?
Rspec.shared_context 'JSON request' do
let(:headers) do
{
'Accept' => 'application/json'
}
end
end
Rspec.shared_context 'Authenticated request' do
let(:headers) do
super().merge('Authorization' => "Bearer #{token}")
end
end
Rspec.describe 'user management' do
let(:token) { create(:oauth_token) }
include_context 'JSON request'
include_context 'Authenticated request'
it 'responds with a 200 ok' do
get '/user', headers: headers
expect(response).to have_http_status(:ok)
end
end
Декларирование token
работы, как ожидалось, но с использованием super()
переопределить headers
Возвращает NoMethodError
предлагая super()
равна нулю.
Отлично, спасибо! –