Question

Comment affirmer la chaîne multiligne avec RSpec? J'ai quelque chose comme ci-dessous en attente:

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

Bien que la sortie est comme prévu, le test échoue en raison des nouvelles lignes et des caractères onglets. Comment faire valoir dans un tel état? Je pense que == matcher ne peux pas gérer.

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 ==)
Était-ce utile?

La solution

Edit: Je ne regarde pas le XML aussi près que je devrais avoir. Il semble que votre espaces et cas de chaîne ne correspondent pas. L'un a UTF-8 et l'autre utf-8. Si vous dépouilleront les espaces et faire le cas insensible de recherche, il doit passer.

Il y a probablement une meilleure façon de faire ce match en rspec, mais pour la simplicité:

a.gsub(/\s/,'').downcase.should == b.gsub(/\s/,'').downcase
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top