Почему эта спецификация запроса работает так, как должна:
require "spec_helper"
describe "POST on a GET route" do
it "should not allow this" do
post "/applicants/new"
assert_response :missing
end
end
Но в этой спецификации контроллера GET, POST, PUT и DELETE работают одинаково, когда не должны:
require 'spec_helper'
describe ApplicantsController do
it "should not allow this" do
post :new
should respond_with :missing # but it responds with 200
end
end
ОБНОВЛЕНИЕ: добавлен код для контроллера Applicants и определение маршрута:
class ApplicantsController < InheritedResources::Base
respond_to :html
actions :index, :new, :create
def new
if current_user
redirect_to resume_application_path and return
end
@applicant = Applicant.new
@applicant.applications.build
@applicant.build_user_detail
new!
end
end
Маршруты:
resources :applicants
ОБНОВЛЕНИЕ : После долгих исследований и изучения API я полагаю, что это сделано специально, поскольку спецификации контроллера наследуются от ActionController :: TestCase, а спецификации запроса наследуются от ActionDispatch :: IntegrationTest. В случае спецификаций контроллера, глаголы HTTP становятся просто описательными.
Может ли кто-нибудь подтвердить, что это умышленно? Или я должен подать отчет об ошибке?
Спасибо!