Многострочное ожидание RSpec тестирование утверждение? - PullRequest
0 голосов
/ 01 ноября 2010

Как подтвердить многострочную строку с помощью 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 ==)

1 Ответ

2 голосов
/ 01 ноября 2010

Редактировать: я не смотрел на XML так пристально, как следовало бы.Похоже, что ваши пробельные символы и не совпадают.Один имеет UTF-8, а другой - UTF-8.Если вы удалите пробел и сделаете поиск нечувствительным к регистру, он должен пройти.

Возможно, есть лучший способ сделать это в rspec, но для простоты:

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