S'il vous plaît lire Relish Project: Rspec Rails 3.6
Il est intégré have_http_status
matcher pour ce que vous essayez de faire.
require "rails_helper"
RSpec.describe ApplicationController, :type => :controller do
controller do
def index
render :json => {}, :status => 209
end
end
describe "GET #index" do
it "returns a 209 custom status code" do
get :index
expect(response).to have_http_status(209)
end
end
end
Si pour une raison quelconque vous souhaitez encore écrire votre propre matcher pour un état de réponse du contrôleur assurez-vous que:
spécifications du contrôleur sont marqués par: type =>: contrôleur ou si vous avez défini config.infer_spec_type_from_file_location! en les plaçant dans spec/controllers.
... et la documentation bien pour Define Matcher
Je sais 'have_http_status'. 'http_asnwer?' était un exemple pour étudier. J'ai aussi utilisé has_http_status dans les spécifications de requête/fonctionnalité, pas dans celles de contrôleur, et cela fonctionne. Ce que je ne comprends pas - pourquoi la variable globale (ou non?) 'Response' n'est pas visible dans mon matcher. – Dimitri