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

时间:2013-01-15 04:31:38

标签: c# unit-testing uri .net-4.5 xunit

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

此服务执行以下操作:

  1. 构造API的API
  2. 读取返回的JSON
  3. 反序列化为相关的C#对象
  4. 映射到我的域实体
  5. 保存到数据库
  6. 我正在尝试对步骤1-4进行单元测试(5超出了此测试的范围)。

    因此,我不想访问web api - 而是我在我的测试项目中本地存储了一个“示例”JSON文件。

    如何阅读此文件并将其构建为Uri对象?

    e.g:

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

    我收到一条错误消息,说“URI格式不正确”。

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

    我正在使用C#.NET 4.5(VS 2012),并使用XUnit进行测试。

2 个答案:

答案 0 :(得分:0)

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

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

有关详细信息,请参阅http://en.wikipedia.org/wiki/File_URI_scheme

答案 1 :(得分:0)

@ RPM1984的提示暗示了答案。我刚遇到这个问题,下面的黑客为我做了这个:

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