我想在我的Integration测试项目的IServiceCollection对象中添加一些Service到Startup.cs . 我在我的集成测试中在WebHostBuilder的ConfigureServices方法中添加了我的TestConfigration,但是在我的启动类之前调用了它,因此我的测试配置被覆盖了 .
Test class TestSetup.cs
var builder = new WebHostBuilder()
.UseEnvironment("development")
.UseContentRoot(contentRoot)
.ConfigureServices(TestConfigureServices)
.UseStartup<Startup>();
private void TestConfigureServices(IServiceCollection serviceCollection)
{
serviceCollection.AddSingleton((c) =>
new TokenClient(TokenEndpoint,
"api.public.client",
"psdfsrfsdf",
innerHttpMessageHandler: _handler));
}
API Project Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton((b) =>
new TokenClient(m.AccessTokenUrl,
SecurityConfig.PublicApiClientId,
SecurityConfig.PublicApiClientPassword));
}
1 回答
我认为您需要为 生产环境 和测试创建不同的
Startup
类 . 然后必要Startup
将"choosen"取决于当前构建 . 例:Updated:
还有第二种方法 - 在一个Startup类中使用特定于环境的方法 . 但我的拙见是,这导致了测试和登台代码之间过多的耦合 .
Example you can see here