gpt4 book ai didi

c# - AspNet Core 集成测试,将参数传递给 WebApplicationFactory

转载 作者:行者123 更新时间:2023-11-30 13:53:52 27 4
gpt4 key购买 nike

我的应用程序设计为独立的 aspnet core webapi 自托管可执行文件。

要启动可执行文件,必须将配置文件路径作为命令行参数传递(例如 MyServer.exe --config "path-to-config-file")

我想通过集成测试来测试它(在本页之后:https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-2.1)

我的问题 - 如何将命令行参数传递给 WebApplicationFactory

谢谢

最佳答案

命令行参数由命令行配置提供程序处理。换句话说,最终结果是您只是在配置根目录中得到这些值,而这正是您稍后访问它们以使用它们的地方。鉴于此,您可以简单地在测试中使用任何配置方式来提供相同的值,甚至直接写入配置。

如果你还没有,你应该继承你的 Startup专门用于测试的类,例如:

public class TestStartup : Startup
{
public TestStartup(IConfiguration configuration)
: base(configuration)
{

}
}

然后,在你的 TestStartup 里面构造函数,您可以在配置中设置适当的值:

configuration["config"] = "path-to-config-file";

请记住 WebApplicationFactory 的类型参数仅用于确定“入口点”,即 Program测试主机将运行以 self 引导。因此,您应该继续使用 WebApplicationFactory<Startup> ,然后配置您的测试主机以使用您的 TestStartup相反:

public MyTests(WebApplicationFactory<Startup> factory)
{
factory = factory.WithWebHostBuilder(builder => builder.UseStartup<TestStartup>());
}

关于c# - AspNet Core 集成测试,将参数传递给 WebApplicationFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51241790/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com