У меня нет времени, чтобы сделать все это для вас, но вот примеры того, как я тестирую свой код:
Обратите внимание: Ropet::Config.expects(:new).returns(config)
, это можно использовать для Nokogiri::XML::Node#new
.
В моих спецификациях используются RSpec и Mocha, мне нравится простота этой настройки и то, что можно сделать с помощью этих простых инструментов.
Редактировать: грубая спецификация для
def write_entry_to_xml(entry)
node = Nokogiri::XML::Node.new( "url" , @xml_document )
node["loc"] = entry.loc
node["changefreq"] = entry.changfreq
node["priority"] = entry.priority
node["lastmod"] = entry.lastmod
@gz.write(node.to_xml)
end
Это может быть что-то вроде этого, хотя я не знаю цели вашего кода.
it 'writes entry to xml' do
content = double('output')
node = double('node'); node.should_receive(:to_xml).and_return(content);
gz = double('gz'); gz.should_receive(:write).with(content)
w = Writer.new("some_path"); w.open
w.instance_variable_set(:@gz, gz) # i'm guessing @gz is assigned after open only?
entry = # i don't know what entry is
Nokogiri::XML::Node.stub(:new).and_return(node)
node.should_receive(:[]).with("loc", entry.loc)
node.should_receive(:[]).with("changefreq", entry.changefreq)
node.should_receive(:[]).with("priority", entry.priority)
node.should_receive(:[]).with("lastmod", entry.lastmod)
w.write_entry_to_xml(entry)
end