Como padrão, defino o WebMock para desativar todas as interações de rede em meu spec_helper.rb:
RSpec.configure do |config|
...
config.before(:each) do
...
WebMock.disable_net_connect!
...
end
end
Eu realmente não quero que nosso código de teste dependa da disponibilidade da rede e quero que eles sejam executados rapidamente.
Às vezes, preciso escrever um teste que se conecte a um serviço do mundo real e quero uma ajudinha para entender o que devo simular.
Assim, permito que o WebMock use a rede e descarte o tráfego que gostaria de analisar para simular:
before(:each) do
WebMock.allow_net_connect! # TODO Mock
WebMock.after_request do |request_signature, response|
puts "Request #{request_signature} was made.nResponse: Status = #{response.status}n Header = #{JSON.pretty_generate response.headers}n Body = #{response.body}"
end
end
Com o despejo relevante, você pode simular vários casos em uma API complexa de terceiros com bastante facilidade.
Não se esqueça de que você terá que revisar a API de terceiros de tempos em tempos para verificar se ela não mudou.