单元测试——为项目中的本地文件构造URI

本文关键字:文件 URI 项目 单元测试 | 更新日期: 2023-09-27 17:53:22

我有一个从外部API解析JSON的服务。

该服务执行以下操作:

  1. 构造一个URI到API
  2. 读取返回的JSON
  3. 反序列化成相关的c#对象
  4. 映射到我的域实体
  5. 保存到数据库

我正在尝试对步骤1-4进行单元测试(步骤5超出了此测试的范围)。

因此,我不想击中web api -相反,我有一个"样本"JSON文件存储在我的测试项目本地。

我如何读取这个文件并将其构造成一个Uri对象?

例句:

var uri = new Uri("myfile.json");

我得到一个错误说" URI是不正确的"。

文件设置为Build Action: Embedded Resource, Copy to Output Directory: Copy always.

我使用c# . net 4.5 (VS 2012),并使用XUnit进行测试。

单元测试——为项目中的本地文件构造URI

使用file:方案和输出目录的完全限定路径,该路径应该与运行测试的路径相同。

var fqn = Assembly.GetExecutingAssembly().Location;
var uri = new Uri("file://" + fqn + "/myfile.json");

@RPM1984的提示给出了答案。我刚刚遇到了这个问题,下面的hack为我解决了这个问题:

string fqnModified = "''" + fqn;
Uri uri = new Uri(fqnModified);