2016-07-29 7 views
0

Ich schreibe derzeit Tests für meine .NET-Anwendung. Um einen Webhandler zu testen, rufe ich ihn mit einem Webclient an und plane, ihn mit einem String zu vergleichen, der aus einer Datei stammt, die ich zuvor geschrieben habe..NET Webhandler Test String Gleichheit Vergleich schlägt fehl

Ich speichere die erwartete Zeichenfolge in einer Datei, weil der WebHandler ein HTML-Dokument generiert, das ich als text/plain zurücksende.

Dies ist der Code, den ich zur Zeit bin mit:

private string getWebResponse(string projectName) 
{ 
    string url = "http://webhandler.ashx?parameter={0}"; 
    WebClient client = new WebClient(); 
    return client.DownloadString(string.Format(url, projectName)); 
} 

[TestMethod()] 
public void ProcessRequestTest1() 
{ 
    string expected = File.ReadAllText(Path.Combine(projectRootFolder, "testresults", "Test (1).txt"), Encoding.UTF8); 
    Assert.AreEqual(expected, getWebResponse("Test (1)")); 
} 

Bei dieser Testfall ausgeführt wird, schlägt der Test fehl, obwohl die zurückgegebenen Strings erscheinen identisch sein (wie ich sie beide mit einem Diff-Tool getestet). Gibt es ein Problem, das ich beim Sammeln der Fäden vermisse?

+0

Vielleicht ist Ihr Diff-Tool defekt. Verwenden Sie 'String.Equals (erwartet, getWebResponse (" Test (1) "), StringComparison.Ordinal)' –

+0

Was ist ein Ordnungsvergleich @TimSchmelter? Außerdem versagt es immer noch für mich. Ich habe es manuell erneut versucht, indem ich das Ergebnis der Methode und die erwartete Zeichenfolge in githubs gist kopiert habe und mir gesagt habe, dass es keine Unterschiede gibt. Was mir in den Sinn kam, waren Zeilenumbrüche. Ist es möglich, dass 'File.ReadAllText()' und der Webclient sie anders parsen? – Marv

+0

Es ist besser, DownloadData zu verwenden, um Bytearray und File.ReadAllBytes zu erhalten, um Bytearray auch zu erhalten, dann vergleichen Sie es. Da gibt es einen Unterschied. –

Antwort

0

Das Problem waren die Newline-Zeichen. Mein Webhandler definierte Zeilenumbrüche als \n. Kopieren - Einfügen des Ergebnisses von meinem Handler in eine Datei führte mich zu einer anderen Zeichenfolge, da Windows \r\n für Zeilenumbrüche verwendet.

Verwandte Themen