asp.net - 为 ASP.NET Core 集成测试设置文件夹
问题描述
我有两个项目。一个是具有以下结构的 ASP.NET Core 3.1 项目。
MyApp.Web
wwwroot
(css, js folders etc.)
Resources
(production files)
我也有一个集成测试项目。
MyApp.Web.IntegrationTests
Resources
(test files)
集成测试项目包含一个测试类,该类扩展IClassFixture<WebApplicationFactory<MyApp.Web.Startup>>
并有自己的Resources
包含测试文件的文件夹。
我想将我的测试文件保存在集成测试项目中,并让我的 Web 应用程序Resources
在运行集成测试时引用集成测试文件夹。当然,在正常运行 web app 时,web app 应该引用自己的Resources
文件夹。
实现这一目标的最佳方法是什么?
解决方案
最后,我替换了一个依赖项,如下所示。
public class ReportsIntegrationTests : IClassFixture<WebApplicationFactory<Startup>>
{
public ReportsIntegrationTests(WebApplicationFactory<Startup> factory)
{
_factory = factory;
}
}
[Fact]
async Task CanGetReport()
{
var client = _factory.WithWebHostBuilder(
builder =>
builder.ConfigureServices(services =>
{
services.Remove(services.SingleOrDefault(d => d.ServiceType == typeof(IResourcesPathProvider)));
services.AddSingleton<IResourcesPathProvider, CustomResourcesPathProvider>();
})).CreateClient();
var response = await client.GetAsync("/reports?dataSource=DataSource");
// Checks and assertions...
}
public class CustomResourcesPathProvider : IResourcesPathProvider
{
public string ResourcesFolder => "Resources";
}
推荐阅读
- kubernetes - kubectl:pod 状态显示为
使用自定义列时的状态 - python - 使用带有两个自变量的 curve_fit 将函数拟合到实验数据
- hive - 向时间戳 Hive 添加分钟
- python - 如何多次重复 .index 搜索
- c - 32536 总线错误 ./program,由于我使用了 recv?
- c - 使用 for 循环检查数组中的元素以确保它们是正确的数据类型,但答案是打印太多次
- javascript - Firebase 函数
- mysql - 远程连接到 Linode mysql 服务器
- python - 如何将多个 csv 文件连接到 pandas 数据框中,文件名作为行名?
- javascript - 如何从这段代码开始使用 Javascript 找到这个方程的定积分?