環境は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_xml
DataMapper のシリアライザーによって提供されるメソッドを持つインスタンスのコレクション (FactoryGirl を使用) を作成するにはどうすればよいですか?
コードは Github でも入手できます。