Rspec用于以下方法

时间:2012-01-13 09:01:51

标签: ruby-on-rails ruby rspec rspec2

任何人都可以帮我写下以下方法的rspec:write_entry_to_xml方法写xml节点。 该条目是一个看起来像

的对象
entry = Sitemap::Entry.new("http://www.example.com", 'monthly', 0.8, "2011-11-23 13:56:42 UTC")

def write_entry_to_xml(entry)
  node = Nokogiri::XML::Node.new("url", @xml_document)
  node["loc"] = entry.loc
  node["lastmod"] = entry.lastmod.to_s
  node["changefreq"] =  entry.changefreq.to_s
  node["priority"] = entry.priority.to_s
  node.to_xml
end

由于

2 个答案:

答案 0 :(得分:0)

有多种方法可以获取一些预定义数据,您可以在ur spec中将其用作输入。 1.

before :each do
    @input = input
   end

现在规范可以访问@input,因为这个块将在每个规范之前运行。 2.您可以将规范中的输入定义为局部变量,然后访问它。如果您需要在许多地方访问相同的变量,那么您可以使用上述方法。

您可以使用Builder等库来获取XML。

 builder = Builder::XmlMarkup.new

  xml = builder.url do | b|
    b.loc = "http://www.experteer.de/jobboerse/deutschland/jobs/mannheim"
    b.changefreq =0.8 
    b.priority = "monthly"
    b.lastmod = "2011-11-23 13:56:42 UTC"
  end

此代码应该为您提供XML对象。如果您需要进一步的帮助,请告诉我。

答案 1 :(得分:0)

首先,你应该知道你的方法的预期输出应该是多少。我们无法告诉您代码应该做什么。一旦你有了,你的规范不必是

describe SomeClass do

  describe('write_entry_to_xml') do
    let(:entry) { Sitemap::Entry.new("http://www.example.com", 'monthly', 0.8, "2011-11-23 13:56:42 UTC")}

    it 'should return a properly formatted xml fragment' do
      SomeClass.write_entry_to_xml(entry).should == "<url>...</url>"
    end
  end
end

这里我假设这个方法是SomeClass上的一个类方法 - 改变以匹配你所做的,你也应该用所需的输出替换“...”