Criando métodos helper no RSpec
Recentemente eu estava escrevendo teste para uma API e eu percebi que eu sempre escrevia algo como:
expect(JSON.load(response.body)["data"]["posts"]).to eq "XXX"
expect(JSON.load(response.body)["data"]["authors"]).to eq "XXX"
De cara você nota que:
expect().to eqé parte do teste, então vamos precisar disso e desse jeito;JSON.load(response.body)["data"]é muito para escrever e não faz parte da syntax padrão.
Um outro agravante é que eu estava apresentando testes automatizados na empresa. Então era necessário que eu fizesse o mais fácil de ler e escrever quanto possível. Eram principalmente pessoas que tem conhecimento do que é teste automatizados, mas que não estão acostumadas com isso.
Vamos ao código!
Eu escrevi algo como:
module MyApp
module Helpers
def json_response
JSON.load(response.body)
end
def api_response
json_response["data"]
end
end
end
RSpec.configure do |config|
config.include MyApp::Helpers
end
MyApp normalmente é o mesmo módulo em config/application.rb se você está numa app Rails.
E sim, tem dois métodos. O primeiro é por que muitas vezes eu vou querer só a resposta em json mesmo, e o segundo é para a resposta padrão da API.