2017-07-28 2 views
0

Ich verwende CsvHelper http://csvhelper.com Version 2.16.3. Ich möchte eine CSV-Datei analysieren, die alle zusätzlichen Leerzeichen in jeder Zelle zuschneidet.C# CsvHelper trimmen nicht die Leerzeichen in den Feldern

dies ist meine fehlerhafte Einheit Test

[Fact] 
    public void GetNextBatch_should_trim_every_cell() 
    { 
     var csvService = new CsvService(); 
     var stream = new MemoryStream(); 
     var streamWriter = new StreamWriter(stream); 
     streamWriter.WriteLine(" 123 , hello "); 
     streamWriter.Flush(); 
     stream.Position = 0; 

     var csvParser = new CsvParser(new StreamReader(stream, true), new CsvConfiguration 
     { 
      IsHeaderCaseSensitive = false, 
      SkipEmptyRecords = true, 
      TrimFields = true, 
      TrimHeaders = true 
     }); 

     var res = csvService.GetNextBatch(csvParser, 10); 
     Assert.Equal("123", res.First()[0]); 
     Assert.Equal("hello", res.First()[1]); 
    } 

    public IEnumerable<string[]> GetNextBatch(CsvParser csvParser, int batchSize) 
    { 
     var list = new List<string[]>(); 
     while (list.Count < batchSize) 
     { 
      var rows = csvParser.Read(); 
      if (rows == null) 
       break; 
      list.Add(rows); 
     } 
     return list; 
    } 

Wenn ich den Test ausführen dies das Ergebnis

Assert.Equal ist() Ausfall ↓ (Pos 0) Erwartet: 123 Aktuell: 123
↑ (pos 0)

Was mache ich falsch? Danke

+0

Id schlagen vor, auf ihnen zu veröffentlichen .. nicht wir. wie es klingt wie ein Fehler in ihrem Code – BugFinder

+0

Danke, das habe ich schon getan –

Antwort

0

Ich benutzte die Bibliothek in einer falschen Weise, anstelle von CsvParser sollte ich CsvReader verwenden, wie in der Dokumentation vorgeschlagen.

Verwandte Themen