Rspec request specs and Rails 5

前端 未结 2 1845
孤街浪徒
孤街浪徒 2021-02-09 04:04

I\'m starting a new project, my first with Rails 5.1.0. I have a pb with my first request spec.

describe \'Users\', type: :request do
  it \'are created from ext         


        
相关标签:
2条回答
  • 2021-02-09 04:57

    I think they changed the syntax recently. Now it should use keyword args. So, something like this:

    post '/api/v1/users', params: params, headers: headers
    
    0 讨论(0)
  • 2021-02-09 05:07

    Here's a little addendum to Sergio's answer. If you are upgrading from Rails 4 to Rails 5, have lots of tests, and aren't too keen on changing them all – at least not until you've finished upgrading – I've found a way to make them work with the old method signature.

    In my spec_helper I added

    module FixLegacyTestRequests
      def get(path, par = {}, hdr = {})
        process(:get, path, params: par, headers: hdr)
      end
      def post(path, par = {}, hdr = {})
        process(:post, path, params: par, headers: hdr)
      end
      def put(path, par = {}, hdr = {})
        process(:put, path, params: par, headers: hdr)
      end
      def delete(path, par = {}, hdr = {})
        process(:delete, path, params: par, headers: hdr)
      end
    end
    

    and then I added this configuration for each test:

    RSpec.configure do |config|
      config.before :each do |example|
        extend(FixLegacyTestRequests) # to be removed at some point!
      end
    end
    

    My tests went back to working, and I think it should be safe because it's only applied to the currently running test and shouldn't pollute any gem's code such as with a monkey patch.

    0 讨论(0)
提交回复
热议问题