環境はSinatra、Nokogiri、RSpec、FactoryGirl、DataMapperです。
問題は、DataMapper のシリアライザーにあります。それを適切にスタブする方法がわかりません。
問題のあるコード:
specify 'should return an xml array of all municipalities' do
municipalities = []
10.times { |n| municipalities << Factory.build(:municipality, :code => "Municipality no #{n}") }
Municipality.stub!(:all).and_return(municipalities)
get "/municipalities.xml"
# ^------- KABOOM!
# [.. rest of code clipped out ..]
end
getを呼び出すコードは、次のものと実質的に同等です。
Municipality.all.to_xml
問題は、結果セットのタイプがメソッドDataMapper::Collectionを持っていることです。#to_xml
Arrayの代わりにスタブ化されたインスタンスのを使用しているため、私のスタブは明らかに機能しませんDataMapper::Collection。
私の質問は:
DataMapper::Collectionタイプであり、#to_xmlDataMapper のシリアライザーによって提供されるメソッドを持つインスタンスのコレクション (FactoryGirl を使用) を作成するにはどうすればよいですか?
コードは Github でも入手できます。