NancyFx测试:无法找到类型或命名空间Bootstrapper

时间:2017-09-29 10:53:25

标签: c# .net testing nancy

更新:我解决了我的问题,取代了

var directoryName = Path.GetDirectoryName(typeof (Bootstrapper).Assembly.CodeBase);

var directoryName = AppDomain.CurrentDomain.BaseDirectory;

现在测试工作正常。无论如何,我打开问题以防万一有人可以使原始代码工作(可能解释为什么Bootstraper比我的解决方案更好:)所以我可以理解为什么在这里使用

原始问题

我只是在C#中与Nancyfx合作,但我刚刚在c#上重新开始工作,可能我错过了很多与dot.net和c#相关的概念,会研究这些周末

尝试为nancy模块创建一些测试(我使用Nancy和NancyFx的帮助测试类)我遇到的问题是那些测试必须使用我为其编写测试的项目的路径(例如我在TestProject中编写了这些测试,我正在测试SelfHostNancyProject)。 所以我需要明确地解决这个问题(实际上我手动复制了TestProject的Views目录中项目SelfHostNancyProject的Views目录)。 但是,即使使用自动构建后命令复制这些目录/文件也不是最好的方法。

我发现了这个解决方案 https://github.com/NancyFx/Nancy/wiki/Nancy-Testing-View-Location 但是在我的代码中复制TestingRootPathProvider类的代码我有错误

  

无法找到类型或命名空间Bootstrapper

public class TestingRootPathProvider : IRootPathProvider
{
  private static readonly string RootPath;

  static TestingRootPathProvider()
  {
    var directoryName = Path.GetDirectoryName(typeof Bootstrapper).Assembly.CodeBase);

    if (directoryName != null)
    {
      var assemblyPath = directoryName.Replace(@"file:\", string.Empty);
      RootPath = Path.Combine(assemblyPath, "..", "..", "..", "Escape.Web");
    }
  }

  public string GetRootPath()
  {
    return RootPath;
  }
}

但是,谷歌我无法找到解决方案。我看到这似乎与app inizialization有关 What are Bootstrappers/Bootstrapping in C#

但无论如何我不明白我必须做哪些导入(如果有的话)才能解决问题,或者可能是我缺少的东西。

1 个答案:

答案 0 :(得分:1)

我解决了我的问题,取代了

var directoryName = Path.GetDirectoryName(typeof (Bootstrapper).Assembly.CodeBase);

使用

var directoryName = AppDomain.CurrentDomain.BaseDirectory;