在进行集成测试时使用web项目config.json

时间:2016-02-20 17:16:45

标签: testing integration-testing asp.net-core

我正在使用ASP.NET 5 RC1,我需要编写集成测试......

所以在测试项目ASPNET5_WEB_TEST上,我有以下内容:

public class IntegrationTests {

  private readonly TestServer _server;
  private readonly HttpClient _client;

  public IntegrationTests() {

    _server = new TestServer(TestServer.CreateBuilder().UseStartup<Startup>());
    _client = _server.CreateClient();

  }

  // Test methods ...
}

Startup类来自我正在测试的ASP.NET 5项目:ASPNET5_WEB

当我运行测试时,我收到以下错误:

The configuration file 'C:\Projects\ASPNET5_TEST\config.json' was not found and is not optional.

我知道我收到此错误,因为在启动时我有:

  builder
    .AddJsonFile("config.json", false)
    .AddJsonFile($"config.{environment.EnvironmentName}.json", true);

要修复此错误,我需要至少将config.json从我的Web项目ASPNET5_WEB复制到我的测试项目ASPNET5_WEB_TEST。但这意味着我需要维护重复的config.json,或者至少每次进行更改时都要复制它。

我不能告诉TestServer使用Web项目的启动以及它的config。*。json文件吗?

我可以使用config.testing.json并在TestServer上设置环境以进行测试,以便启动代码使用config.json和config.testing.json吗?

2 个答案:

答案 0 :(得分:1)

我假设你正在使用TestServer中的aspnet,如果是这样的话,它不是为了支持你读取配置文件的方式而构建的。 TestServer用于为其“托管引擎”运行简单集成测试,但不用于网站的集成测试。

然而,他们可以使用ApplicationDeployerFactory类。有关如何运行“集成”服务器的示例,请参阅this。我已经将selenium与它结合使用来对我正在研究的项目运行集成测试。

答案 1 :(得分:0)

是的,你可以。

看一下这个问题https://github.com/aspnet/Mvc/issues/3410和提到的包。

基本上您需要实现自己的IApplicationEnvironment