2012-01-13 45 views
0

任何人都可以幫我寫下rspec爲以下方法write_entry_to_xml方法寫入xml節點。 入口是一個對象,它看起來像Rspec爲以下方法

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 

感謝

+0

編寫一個規範,使用您的方法和一些示例輸入,並檢查輸出是否如預期。你不明白什麼? – 2012-01-13 09:24:11

+0

@Frederick Cheung你能告訴我一個例子,我怎樣才能爲我的方法創建一些預定義的輸入數據,並運行我的方法與該數據,以確認輸出是我期望的...謝謝 – gikian 2012-01-13 09:26:20

+0

獲取此書:[ RSpec書](http://pragprog.com/book/achbd/the-rspec-book),你將沒有問題:-) – 2012-01-13 10:30:58

回答

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一個類的方法 - 改變,以配合你做了什麼,你也應該顯然用所需的輸出替換「...」

+0

我可以爲url的多個部分應該匹配,比如loc,頻率等...? – gikian 2012-01-18 14:50:23

+0

這取決於你。一次性輸出,或者拉開字符串(例如,指定它包含某個字符串片段,匹配正則表達式等)。您甚至可以用nokogiri解析它,並驗證解析的輸出包含您想要的內容。 – 2012-01-18 15:00:43

+0

我怎樣才能在我的規範中使用nokogiri我使用inmy方法來格式化xml,但是如何在規範中使用? – gikian 2012-01-18 15:15:49

0

有不同的方法來獲得,你會在烏爾規範輸入使用一些預先定義的數據。 1.

before :each do 
    @input = input 
    end 

現在@input將是規格訪問,因爲這塊將每一個規範之前運行。 2.您可以將spec中的輸入定義爲局部變量,然後進行訪問。如果你需要在很多地方訪問相同的變量,那麼你可以使用上面的方法。

您可以通過使用類似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對象。如果您需要進一步幫助,請告訴我。

+0

如果我的輸入是上面提到的一組數據,我怎麼才能定義它在我的規範中使用 – gikian 2012-01-13 09:58:07

+0

看起來就像你需要一些XMl數據你可以有一些字符串並使用一些ruby庫將它解析成XML並使用它。 – 2012-01-13 10:59:59

+0

但是如何?請給我一個開始請:( – gikian 2012-01-13 11:06:59