在我的集成测试中,我使用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
答案 0 :(得分:7)
我需要进行一些更改才能让你的回购工作:
appsettings.sample.json
重命名为appsettings.json
,我想这只是因为它不在源代码管理中。"buildOptions": { "copyToOutput": [ "appsettings.json" ] }
添加到IntegrationTests项目的project.json
。Verbose
中的日志级别Debug
更改为appsettings.json
。但是在此之后集成测试EndPointsRequiresAuthorization
经历了依赖注入,对我来说它失败了ShikashiBotManager
中的异常,我猜是因为我没有设置Postgre数据库。
对于你来说,它之前已经失败了,因为它无法解析IShikashiBotManager
接口,对吗?
您是否可以尝试使用git clean -xfd
完全清除本地存储库(注意:您的未提交的本地更改将被删除),重建并重试?