Ruby on rails 测试参数vs多个regexp n RSpec

Ruby on rails 测试参数vs多个regexp n RSpec,ruby-on-rails,ruby,ruby-on-rails-4,rspec,shoulda,Ruby On Rails,Ruby,Ruby On Rails 4,Rspec,Shoulda,我有一个方法可以处理一些api调用的失败。我为此编写了测试: 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_

我有一个方法可以处理一些api调用的失败。我为此编写了测试:

  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个regexp组合成一个期望值


在一个测试用例中,是否可以在单个参数上放置多个regexp

您可以将所有这些regexp合并为一个(使用regexp的AND运算符)

这个regexp将测试字符串,如果它与上面所有的匹配

然后在测试用例中:

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