active_model_serializer + devise + rspec

时间:2014-11-26 20:07:03

标签: ruby-on-rails ruby-on-rails-4 rspec devise active-model-serializers

我正在使用序列化程序(Rspec)处理undefined method 'authenticate' for nil:NilClass请求。

API / users_controller_spec.rb

require 'rails_helper'

describe Api::V1::UsersController, type: :controller do
  describe "GET #show" do
    context "with valid credentials" do
      let!(:application) { create(:doorkeeper_application) } # OAuth application
      let!(:user)        { create(:user) }
      let!(:token)       { create(:doorkeeper_access_token, application_id: application.id, resource_owner_id: user.id) }
      before do
        allow(controller).to receive(:doorkeeper_token) {token}
      end

      context 'and valid request' do
        before(:each) do
          get :show, format: :json
          @json = JSON.parse(response.body)
        end

        it "returns the user with 'id'" do
          expect(@json["id"]).to_not be_nil
        end
      end
    end
  end
end

串行器/ user_serializer.rb

class UserSerializer < ActiveModel::Serializer
  attributes :id, :uid, :name, :email
end

1 个答案:

答案 0 :(得分:1)

原来我需要的是将serialization_scope :view_context添加到我的ApplicationController但我在观看有关宝石的精彩铁路广播时才发现它:http://railscasts.com/episodes/409-active-model-serializers?view=asciicast

被修改

不要使用active_model_serializer&gt; 0.9.x否则会破坏生产。 https://github.com/rails-api/active_model_serializers/commit/0d31e72d2211b6bf7f0b0420139c4b370d6e986e https://github.com/rails-api/active_model_serializers/issues/139