如何模拟配置文件

问题描述 投票:0回答:1

我需要测试一个使用 CSVHelper 的函数

 {
     private readonly CsvConfiguration _csvConfig;

     public CsvWriterService(CsvConfiguration csvConfig)
     {
         _csvConfig = csvConfig;
     }
     public void WriteCsv(TradeRecord record, string filePath)
     {
         using var writer = new StreamWriter(filePath);
         using var csv = new CsvWriter(writer, _csvConfig);

         csv.Context.RegisterClassMap<TradeRecordMap>();
         csv.WriteHeader<TradeRecord>();
         csv.WriteRecord(record);
     }
 }

如何在构造函数中模拟 _csvConfig? 到目前为止我所拥有的:

private readonly CsvConfiguration _csvConfig;

public CsvWriterServiceTest()
{
    CsvWriterService_Sut = new CsvWriterService(_csvConfig);
}
 [Fact]
 public void WriteCsv_RecordsAndFilePath_Should_WriteCsv()
 {
     //Arrange

     var date = new DateTime(2021, 1, 1);
     var records = new List<TradeRecord>{};
     var filePath = "TestFilePath.csv";

     //Act
     CsvWriterService_Sut.WriteCsv(records, filePath);

     //Assert
     Assert.True(File.Exists(filePath));
 }

CsvWriterService_Sut 未实例化并给出 NullReferenceException 。

谢谢大家

c# moq xunit csvhelper
1个回答
0
投票

模拟配置可能会很痛苦,而且我发现通常不值得模拟它。就我个人而言,我只会创建一个 CsvConfiguration 的新实例并将其传递到您的构造函数中。

并非所有东西都需要在测试中进行模拟。有时您可以只使用该类的常规实例。

© www.soinside.com 2019 - 2024. All rights reserved.