2010-11-01 115 views
0

如何使用RSpec聲明多行字符串? 我有類似下面的預期:多行期望RSpec測試斷言?

it "should generate the correct header for the xml file" do 
    xml_header = <<-XML 
    <?xml version="1.0" encoding="utf-8"?> 
    <FileSpec> 
    <Header> 
     <Version>1.0</Version> 
     <DateTime>2010-10-17T10:41:18</DateTime> 
     <Sequence>3</Sequence> 
     <ClientID>QQWW</ClientID> 
     <FileType>QQWW</FileType> 
    </Header> 
    </FileSpec> 
    XML 
    puts SomeXml.build_xml_header 
    SomeXml.build_xml_header.to_s.should == xml_header 
end 

雖然產量不如預期,測試失敗,因爲新線和標籤的字符。 如何在這種情況下斷言?我認爲==匹配器不能處理它。

Failure/Error: SomeXml.build_xml_header.to_s.should == xml_header 
expected: " <?xml version=\"1.0\" encoding=\"utf-8\"?>\n <FileSpec>\n \t<Header>\n \t\t<Version>1.0</Version>\n \t\t<DateTime>2010-10-17T10:41:18</DateTime>\n \t\t<Sequence>3</Sequence>\n \t\t<ClientID>QQWW</ClientID>\n \t\t<FileType>QQWW</FileType>\n \t</Header>\n </FileSpec>\n", 
     got: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<FileSpec>\n <Header>\n <Version>1.0</Version>\n <DateTime>2010-10-17T10:41:18</DateTime>\n <Sequence>3</Sequence>\n <ClientID>QQWW</ClientID>\n <FileType>QQWW</FileType>\n </Header>\n</FileSpec>\n" (using ==) 

回答

2

編輯:我沒有仔細看看XML應該如此。看起來你的空白字符不匹配。一個有UTF-8,另一個有utf-8。如果刪除空格並使搜索不區分大小寫,它應該通過。

有可能是一個更好的方式來做到這一點的比賽中RSpec的,但是爲了簡單:

a.gsub(/\s/,'').downcase.should == b.gsub(/\s/,'').downcase 
+0

嘛,我加幾gsubs更剝奪了\ t和\ n完全和它太刪除。但是,剝離結果的錯誤仍然是一樣的。 http://pastie.org/1266194 – Autodidact 2010-11-02 09:34:28

+0

我的不好,我沒有仔細檢查你的XML,因爲我應該有。字符串大小寫與'UTF-8'不匹配。我編輯了我的答案以反映這一點。 – 2010-11-02 12:22:53