c# - 迁移到 ASP.NET Core RC2 后集成测试中断

标签 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. 我不得不将 appsettings.sample.json 重命名为 appsettings.json,我想这只是因为它不在源代码管理中。
  2. 我必须将 "buildOptions": { "copyToOutput": [ "appsettings.json"] } 添加到 IntegrationTests 项目的 project.json。<
  3. 必须在 appsettings.json 中将日志级别 Verbose 更改为 Debug

但是在这之后集成测试 EndPointsRequiresAuthorization 经历了依赖注入(inject),对我来说它失败了,在 ShikashiBotManager 中出现异常,我猜是因为我没有Postgre 数据库设置。
对你来说,在此之前它已经失败了,因为它无法解析 IShikashiBotManager 接口(interface),对吗?

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

关于c# - 迁移到 ASP.NET Core RC2 后集成测试中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37361775/

相关文章:

c# - ASP.NET 缓存 - 直接赋值和 Add() 或 Insert() 有什么区别

c# - 在 Show() 之前获取窗口的大小

c# - 如何将 Open Xml 数学方程式转换为 MathML

asp.net - 服务器.传输 Vs.响应.重定向

c# - MVC3 HandleError 不显示错误页面

asp.net - ASP.NET 中的 session 劫持保护

c# - dotnet 测试 - 测试项目未编译时退出代码 0

c# - 如何在FusionCharts中绘制多系列柱形图

c# - 在 ASP.NET5 控制台应用程序中使用 Startup 类

c# - 如何在 ASP.NET Core 3.0 中调用 UseWebRoot