unit-testing - 从 FileInfo.FromFileName() 返回时,添加到 MockFileSystem 的文件没有 Exists = true
问题描述
也可以在... https://github.com/System-IO-Abstractions/System.IO.Abstractions/issues/393上找到
(但这里有更广泛的受众)
在测试中,我有以下内容:
var testSettings = new ApplicationSettings() { DefaultLedgerFilename = testLedgerFilename };
//Add the byte array as file data
var fileData = new MockFileData(testSettings); //I added an overload PR #389
//Create a file system with the fake data as a "file"
var fileSystem = new MockFileSystem(new Dictionary<string, MockFileData>
{
{ AppDomain.CurrentDomain.BaseDirectory+"MoneyTrackerConfig.config", fileData }
});
在代码库中,我有以下内容:
var tempFile = _fileSystem.FileInfo.FromFileName(_path);
if (tempFile.Exists && (tempFile.Length > 0))
{
...
问题是当我运行测试“tempFile.Exists”时返回“false”。即使我在驱动器上创建文件,它也会返回“假”。我究竟做错了什么?
解决方案
发现问题。经过一天的调试(包括深入研究和调试 System.IO.Abstractions 源代码),我意识到我错过了一个反斜杠。
是的,纯粹的用户错误。注意上面的行
{ AppDomain.CurrentDomain.BaseDirectory+"MoneyTrackerConfig.config", fileData }
... 它应该是 ...
{ AppDomain.CurrentDomain.BaseDirectory+@"\MoneyTrackerConfig.config", fileData }
很抱歉任何认真对待这件事的人。我觉得荒谬。
推荐阅读
- c++ - 我可以存储指向转发声明的类/结构的指针吗?
- mongodb - MongoDB中的聚合总和
- fortran - gfortran -fopenmp 导致分段错误
- html - CSS按钮滑动过渡效果问题
- architecture - Xcode 12 Apple M1 arm64 - 可设计错误:“错误的架构”
- excel - 当我已经在变量中设置文件名和路径时如何关闭工作簿
- python - Tensorflow:梯度在训练过程中突然变成了 NaN
- xml - 如何删除 PostgreSQL 中的 XML 属性?
- angular - 从 @ 开始的 Angular 模块
- haskell - Haskell IO:无法将类型“IO”与“[]”匹配