【问题标题】:How to use an ASP.NET Core environment variable in testing with Visual Studio如何在 Visual Studio 测试中使用 ASP.NET Core 环境变量
【发布时间】:2016-12-18 12:32:22
【问题描述】:

在我的集成测试中,当测试在开发环境中运行时,我想设置一个特定的连接字符串,当测试在暂存环境中运行时,我想设置另一个连接字符串。

当我不处于测试模式时,我只需在机器上设置环境变量,一切正常。但是在测试时我可以使用UseEnvironment(envX),但是在所有机器上它都会是envX,或者不使用这种方法,并获得默认的(即生产)。

那么,如何在集成测试中使用多个基于环境的连接字符串?

【问题讨论】:

    标签: visual-studio-2015 asp.net-core environment-variables integration-testing visual-studio-2017


    【解决方案1】:

    如果您使用IHostingEnvironment 来检查集成测试代码中的环境,那么您可以覆盖IHostingEnvironment.EnvironmentName 中的值:

    //IHostingEnvironment env;
    
    env.EnvironmentName = 'Development';
    env.IsDevelopment() // return true;
    
    env.EnvironmentName = 'TEST';
    env.IsDevelopment() // return false;
    env.IsEnvironment('TEST') // return true;
    

    【讨论】:

    • 在多个环境中运行相同的测试时,这对我有何帮助?相同的测试有时应该在 envX 上运行,有时在 envY 上运行
    【解决方案2】:

    您可以在运行测试之前设置环境变量ASPNETCORE_ENVIRONMENT,而不是使用UseEnvironment(envX)

    SET ASPNETCORE_ENVIRONMENT=TestSET ASPNETCORE_ENVIRONMENT=SomeOtherEnvironment

    【讨论】:

    • 在 Visual Studio 中运行单元测试时,我在哪里设置环境变量?我在 cmd 上运行此命令,但是在调试测试时我可以看到 env.name 仍在生产中
    • 如果您只是在 Visual Studio 中运行它,我认为您目前无法执行此操作。如果是从控制台运行或者编写小脚本,可以先设置环境变量,然后运行dotnet test
    【解决方案3】:

    如果你正在运行dotnet test,你可以先在本地的PowerShell窗口中设置环境变量:

     $env:ASPNETCORE_ENVIRONMENT="test"
     dotnet test
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-23
      • 1970-01-01
      • 1970-01-01
      • 2021-03-22
      • 2021-01-15
      • 2011-04-26
      • 2022-11-16
      • 2010-11-03
      相关资源
      最近更新 更多