如何测试RSpec自定义匹配器

时间:2014-12-22 22:07:53

标签: ruby unit-testing rspec

我正在开发像rspec-dnsrspec-ssltls这样的RSpec自定义匹配器。

测试RSpec自定义匹配器的最有效方法是什么?

我测试自定义匹配器(表示测试目标是自定义匹配器)。我可以测试自定义匹配器的正常情况,如下所示。

rspec_ssltls/have_certificate_spec.rb

## Having certificate
it 'can evaluate having certificate' do
  stub_ssl_socket(peer_cert_chain: [nil])
  expect('www.example.com:443').not_to have_certificate
  stub_ssl_socket(peer_cert_chain: [example_cert])
  expect('www.example.com:443').to have_certificate
end

但是如果我测试错误情况,RSpec测试用例就会失败。我想测试错误情况可能是错误。

1 个答案:

答案 0 :(得分:0)

如果失败的断言是

expect('www.example.com:443').not_to have_certificate

带有消息“url确实有证书” 然后你可以用

测试它
expect { expect('www.example.com:443').not_to have_certificate }.to raise_error 'url does have certificate'

如果只想测试部分失败信息,可以使用

expect { expect('www.example.com:443').not_to have_certificate }.to raise_error(/does have/)