我有设计为独立的应用程序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 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
测试主机将运行以引导自身。因此,您应该继续使用WebApplicationFactory<Startup>
,然后配置您的测试主机以使用您的TestStartup
反而:
public MyTests(WebApplicationFactory<Startup> factory)
{
factory = factory.WithWebHostBuilder(builder => builder.UseStartup<TestStartup>());
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)