0

我正在尝试为我的 rails 应用程序中的序列化程序编写一个简单的 Rspec。我尝试使用:

ActiveModelSerializer::Matchers。因为这不起作用。我确实尝试让我的 Rspec 测试看起来像下面这样:

require 'spec_helper'

describe CoffeeTypeSerializer do

  it { should have_key(:name) }
  it { should have_key(:image) }
  it { should have_key(:type_of_coffee) }
  it { should have_key(:temp) }
  it { should have_key(:caffeinated) }
  it { should have_key(:basicInfo) }
  it { should have_key(:price) }
  it { should have_key(:created_at) }
  it { should have_key(:updated_at) }
  it { should have_key(:fullInfo) }
  it { should have_key(:drinks) }
end

不幸的是,没有运气并得到以下错误:

ArgumentError:参数数量错误(0 表示 1..2)

尝试搜索高低,但测试 JSON 序列化程序的最佳方法是什么

4

1 回答 1

2

我们已经走了并且基本上推出了我们自己的匹配器,因为 JSON 序列化器也不适用于我们。他们有点参与,所以我将它们添加到一个要点中:https ://gist.github.com/gavingmiller/e03ff13edfeef8d5c08d

示例测试最终看起来像这样:

require 'spec_helper'

describe FeedSerializer, type: :serializer do
  it { should have_attribute(:id) }
  it { should have_attribute(:name) }
  it { should have_many_relation(:feed_filters) }
end

当我们对序列化程序进行修改(即:与直接属性不同的输出)时,我们的测试如下所示:

it "successfully parses JSON as an additional field" do
  @data = '{ "key": "value" }'
  json = FooBarSerializer.new(data).as_json
  json[:foo][:bar]['key'].should == 'value'
end
于 2013-09-10T13:39:24.077 回答