Csharp/C#教程:使用XUnit和ASP.NET Core 1.0进行dependency injection分享


使用XUnit和ASP.NET Core 1.0进行dependency injection

我试图找出如何使用XUnit的dependency injection。 我的目标是能够将我的ProductRepository注入我的测试类。

这是我正在尝试的代码:

public class DatabaseFixture : IDisposable { private readonly TestServer _server; public DatabaseFixture() { _server = new TestServer(TestServer.CreateBuilder().UseStartup()); } public void Dispose() { // ... clean up test data from the database ... } } public class MyTests : IClassFixture { DatabaseFixture _fixture; public ICustomerRepository _repository { get; set; } public MyTests(DatabaseFixture fixture, ICustomerRepository repository) { _fixture = fixture; _repository = repository; } } 

这是错误:以下构造函数参数没有匹配的fixture数据(ICustomerRepository存储库)

这让我相信XUnit不支持dependency injection,只有它是一个Fixture。

有人能给我一种使用XUnit在我的测试类中获取ProductRepository实例的方法吗? 我相信我正确启动了测试服务器,因此Startup.cs运行并配置DI。

好吧,我认为不可能访问SUT的容器。 说实话,我并不完全理解你为什么要这样做。 您需要完全控制您的SUT。 这意味着你想提供自己的dependency injection。

而那,你可以!

 _server = new TestServer(TestServer.CreateBuilder(null, app => { app.UsePrimeCheckerMiddleware(); }, services => { services.AddSingleton(); services.AddSingleton(); })); 

CreateBuilder为此提供重载。 您出于同样的原因需要提供配置和应用程序配置(原因是您希望完全控制SUT)。 如果您有兴趣,我会按照这篇文章制作上面的例子。 如果你愿意,我也可以将样本上传到我的GitHub?

如果有帮助,请告诉我。

更新 GitHub示例: https : //github.com/DannyvanderKraan/ASPNETCoreAndXUnit

上述就是C#学习教程:使用XUnit和ASP.NET Core 1.0进行dependency injection分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/959483.html

(0)
上一篇 2021年11月23日
下一篇 2021年11月23日

精彩推荐