2013-09-10 4 views
0

Я пытаюсь написать простой Rspec для сериализатора, который у меня есть в приложении rails. Я попытался использовать:RSpec Rails Serializer JSON

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: wrong number of arguments (0 for 1..2)

Пробовал поиск высокий и низкий, но что лучший способ протестировать сериализаторы JSON

ответ

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 
+1

любой шанс на гемминг этих помощников? –

Смежные вопросы