2015-11-13 7 views
1

У меня есть метод, который обрабатывает сбой при некоторых вызовах api. Я написал тесты для него:Тестовый параметр vs multiple regexp n RSpec

it 'logs the error' do 
    expect(Rails.logger).to receive(:error).with(/Failed API call/i) 
    expect(Rails.logger).to receive(:error).with(/#{error_type}/) 
    expect(Rails.logger).to receive(:error).with(/#{server_error}/) 
    subject 
    end 

, но чтобы сделать его работу я должен был бы сделать 3 API вызовов или разделить его на 3-х тестов. Мне не нравятся оба решения. Я думаю, что лучше всего было бы объединить 3 регулярных выражения в единое ожидание.

Можно ли разместить несколько регулярных выражений по одному параметру в одном тестовом случае?

ответ

1

Вы можете объединить все это регулярное выражение в одно (с помощью оператора регулярных выражений И).

let(:expected_log_message) do 
    /(?=.*Failed API call)(?=.*#{error_type})(?=.*#{server_error})/i 
    end 

это регулярное выражение будет проверять строку, если она соответствует всем вышеперечисленным.

Тогда внутри теста:

it 'logs the error' do 
    expect(Rails.logger).to receive(:error).with(expected_log_message) 
    subject 
    end 

 Смежные вопросы

  • Нет связанных вопросов^_^