2

コントローラーの JSON 応答をテストしようとしていますが、

ここに私のモデルがあります:

class SalesRep < Person
 include Mongoid::Document
end


#Here is Class Person which SalesRep Inherits from:

class Person
include Mongoid::Document

field :nf,  as: :first_name,    type: String
field :nl,  as: :last_name,     type: String
field :ttl, as: :title,         type: String
field :ph,  as: :phone_num,     type: String
field :em,  as: :email,         type: String


attr_accessible :first_name,
                :last_name,
                :title,
                :phone_num ,
                :email

end

これが私の Controller#index です:

def index
@sales_reps = SalesRep.all

respond_to do |format|
  format.html # index.html.erb
  format.json { render json: @sales_reps, root: false }
end
end

そして、これがJSON応答をテストしようとしている私のrspecテストです:

  require 'spec_helper'
  describe SalesRepsController do
  let(:valid_attributes) { { first_name: "Seth", last_name: "McFee" } }
  describe "GET index" do
    let!(:sales_rep1){ SalesRep.create! valid_attributes}
    it "return JSON-formated content" do
      get :index, format: :json
      expect(response.body).to have_content sales_rep1.to_json
    end
  end
  end

そして、ここにシリアライザーがあります:

class SalesRepSerializer < ActiveModel::Serializer
  attributes :id, :first_name, :last_name
end

ここにテスト出力があります: 1) SalesRepsController GET インデックスは JSON 形式のコンテンツを返します

Failure/Error: expect(response.body).to have_content sales_rep1.to_json
expected to find text "{\"_id\":\"52171a4fd7037ee84e000001\",\"em\":null,\"meeting_ids\":[],\"nf\":\"Seth\",\"nl\":\"McFee\",\"ph\":null,\"sex\":1,\"ttl\":null}" in "[{\"id\":\"521718ced7037e15c2000001\",\"first_name\":\"Mark\",\"last_name\":\"Doe\"},{\"id\":\"52171a4fd7037ee84e000001\",\"first_name\":\"Seth\",\"last_name\":\"McFee\"}]"

ご覧のとおり、テストは nf と nl を見つけることを期待していますが、代わりにフィールド Aliases (それぞれ first_name、last_name ) を受け取っています。問題はわかりますが、修正方法がわかりません!

検索中に使用するヘルプ/アドバイス/ヒント/キーワード。高く評価されています。

PS、投稿を読みやすくするために、一部のデータは非推奨です。

PPS、下手な英語でごめんなさい。

4

1 に答える 1

0

現在、すべてのモンゴイド バージョンで、それが動作です。JSON シリアライゼーションは、エンコード時にエイリアス フィールドを使用しません。まだ議論中のhttps://github.com/mongoid/mongoid/pull/2849を修正するための PR があります。その機能が必要な場合は、PR を独自のフォークにマージできます。また、マージを早めるためにチケットに投票することもできます。

于 2013-08-25T01:21:21.637 に答える