Set Rspec default GET request format to JSON

前端 未结 10 1954
失恋的感觉
失恋的感觉 2020-12-02 22:31

I am doing functional tests for my controllers with Rspec. I have set my default response format in my router to JSON, so every request without a suffix will return JSON.

10条回答
  •  悲&欢浪女
    2020-12-02 22:55

    Why don't RSpec's methods, "get", "post", "put", "delete" work in a controller spec in a gem (or outside Rails)?

    Based off this question, you could try redefining process() in ActionController::TestCase from https://github.com/rails/rails/blob/32395899d7c97f69b508b7d7f9b7711f28586679/actionpack/lib/action_controller/test_case.rb.

    Here is my workaround though.

    describe FooController do
        let(:defaults) { {format: :json} }
    
        context 'GET index' do
            let(:params) { defaults }
            before :each do
                get :index, params
            end
    
            # ...
        end
    
        context 'POST create' do
            let(:params) { defaults.merge({ name: 'bar' }) }
            before :each do
                post :create, params
            end
    
            # ...
        end
    end
    

提交回复
热议问题