I've got UserController:
  def update
    if check_token?
      @user.update(user_params)
      head :no_content
    end
  end
I need to test it with Rspec
  describe 'PUT /users/:id' do
    let!(:user) { User.create(id: 1, email: 'test@mail.ru', password: 'abc123') }
    context '# check success update' do
      before(:each) do
        patch :update, { user: { id: 1, email: 'newmail@example.com' } }
      end
      it 'returns status code 204' do
        expect(response).to have_http_status(204)
      end
    end
  end #<-- end of PUT /users/:id
I can't make update request properly in the before section. Guys, where can I find documentation with clear examples, how to test Rails api with RSpec. I've found a good book about this topic: http://apionrails.icalialabs.com/book/chapter_three#uid96
But don't want to use FactoryGirl and extra gems to generate users, and the code from this book doesn't work.
Error:
Failures:
  1) UsersController PUT /users/:id # check success update returns status code 204
     Failure/Error: patch :update, { user: { id: 1, email: 'newmail@example.com' } }
     ArgumentError:
       unknown keyword: user
     # ./spec/controllers/users_controller_spec.rb:37:in `block (4 levels) in <top (required)>'
Changed code a little bit:
  describe 'PUT /users/:id' do
    let!(:user) { User.create(id: 1, email: 'test@mail.ru', password: 'abc123') }
    context '# check success update' do 
      before { patch 'update', params: { user: { id: 1, email: 'newmail@example.com' } } }
      it 'returns status code 204' do
        expect(response).to have_http_status(204)
      end
    end
  end #<-- end of PUT /users/:id
Now I've got the error: ActionController::UrlGenerationError: No route matches {:action=>"update", :controller=>"users", :user=>{:id=>1, :email=>"newmail@example.com"}}
Why is that? My routes:
 users GET    /users(.:format)     users#index
       POST   /users(.:format)     users#create
  user GET    /users/:id(.:format) users#show
       PATCH  /users/:id(.:format) users#update
       PUT    /users/:id(.:format) users#update
   DELETE /users/:id(.:format) users#destroy
