迁移到ASP.NET Core RC2后,集成测试中断

时间:2016-05-21 10:36:16

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

在我的集成测试中,我使用TestServer类来为我的集成测试开发测试服务器实例。在RC1中,我使用以下代码对其进行了实例化:

var server = new TestServer(TestServer.CreateBuilder().UseStartup<Startup>());

在RC2上,删除了TestServer.CreateBuilder()。因此,我尝试使用以下代码创建一个新的TestServer:

var server = new TestServer(new WebHostBuilder().UseStartup<Startup>());

我遇到的问题是在RC2之后,运行时无法解析DI的依赖关系,因此它会在Startup类的Configure方法上抛出异常。但是,如果我启动实际服务器(而不是测试项目),系统会启动。引发的异常如下:

  System.Exception : Could not resolve a service of type 'ShikashiBot.IShikashiBotManager' for the parameter 'botManager' of method 'Configure' on type 'ShikashiBot.Startup'.

我目前正在为测试主机使用以下软件包:Microsoft.AspNetCore.TestHost": "1.0.0-rc2-final

1 个答案:

答案 0 :(得分:7)

我需要进行一些更改才能让你的回购工作:

  1. 我必须将appsettings.sample.json重命名为appsettings.json,我想这只是因为它不在源代码管理中。
  2. 我必须将"buildOptions": { "copyToOutput": [ "appsettings.json" ] }添加到IntegrationTests项目的project.json
  3. 必须将Verbose中的日志级别Debug更改为appsettings.json
  4. 但是在此之后集成测试EndPointsRequiresAuthorization经历了依赖注入,对我来说它失败了ShikashiBotManager中的异常,我猜是因为我没有设置Postgre数据库。
    对于你来说,它之前已经失败了,因为它无法解析IShikashiBotManager接口,对吗?

    您是否可以尝试使用git clean -xfd完全清除本地存储库(注意:您的未提交的本地更改将被删除),重建并重试?