我需要测试一个使用 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 。
谢谢大家
模拟配置可能会很痛苦,而且我发现通常不值得模拟它。就我个人而言,我只会创建一个 CsvConfiguration 的新实例并将其传递到您的构造函数中。
并非所有东西都需要在测试中进行模拟。有时您可以只使用该类的常规实例。