【发布时间】:2019-03-07 22:41:24
【问题描述】:
如何在集成测试中访问内存数据库的 dbcontext?
并进行类似的测试:
public class IndexPageTests :
IClassFixture<CustomWebApplicationFactory<RazorPagesProject.Startup>>
{
private readonly HttpClient _client;
private readonly CustomWebApplicationFactory<RazorPagesProject.Startup>
_factory;
public IndexPageTests(
CustomWebApplicationFactory<RazorPagesProject.Startup> factory)
{
_factory = factory;
_client = factory.CreateClient(new WebApplicationFactoryClientOptions
{
AllowAutoRedirect = false
});
}
在这个 IndexPageTests 中是否可以访问内存中的 dbcontext?
我试过了
using (var context = new ApplicationDbContext(???))
我需要访问之前从 CustomWebApplicationFactory 播种的表中的数据
但不确定要为选项添加什么
【问题讨论】:
-
您必须通过主机的服务提供商解决它。
factory.Server.Host.Services.GetService<ApplicationDbContext>() -
@Nkosi,这给出了错误:无法从根提供程序解析范围服务'ApplicationDbContext'。
-
@Nikosi,谢谢你为我指明了正确的方向......必须首先创建范围 _factory.Server.Host.Services.GetService
(); -
很高兴为您提供帮助。您应该将其添加为自己的答案,以便其他人受益。
标签: testing asp.net-core integration-testing