如何使用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 ==)
答案 0 :(得分:2)
编辑:我没有像我应该那样仔细地查看XML。您的空白和字符串案例似乎不匹配。一个有UTF-8,另一个有utf-8。如果你删除空格并使搜索大小写不敏感,它应该通过。
在rspec中进行此匹配可能有更好的方法,但为简单起见:
a.gsub(/\s/,'').downcase.should == b.gsub(/\s/,'').downcase