在使用ASP.NET Core进行集成测试期间使用多个环境

gza*_*zak 4 xunit visual-studio-2015 dnx asp.net-core

这是测试项目的launchSettings.json文件:

{
  "profiles": {
    "test": {
      "commandName": "test",
      "environmentVariables": {
        "Hosting:Environment": "Development"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

测试项目依赖于服务器项目,并使用服务器项目的Startup类直接初始化测试,如下所示:

Server = new TestServer(TestServer.CreateBuilder().UseStartup<Startup>());
Client = Server.CreateClient();
Run Code Online (Sandbox Code Playgroud)

但出于某种原因,当我Startup.Configure在调试器中输入方法时,env.EnvironmentName是生产.我应该在哪里设置测试.xproj的环境名称?

在相关的说明中,我是否应该Startup在测试项目中拥有该类的本地测试版本?文档似乎暗示......否则appsettings会从何而来?他们没有将测试项目显示为在本地拥有appsettings的副本,但我非常确定Startup该类(无论是重用还是本地)都需要它.请指教.

dav*_*owl 8

您可以使用UseEnvironment方法.

Server = new TestServer(TestServer.CreateBuilder().UseEnvironment("Testing").UseStartup<Startup>());