在 aspnet 樣板中,有一個LocalIocManager屬性可用于單元測驗,以允許替換服務,然后獲取我們想要測驗的實體,其中僅包含由NSubstitute.
在 abp.io 中,我再也找不到這個屬性或替換程式了。我該如何更換它?
在https://docs.abp.io/en/abp/latest/Testing#example-testing-a-domain-service-1中,我們可以看到一個帶有 的示例fakeRepo,但它是“手動”注入的。當依賴項很少時可以這樣做,但是當依賴項更多時就會出現問題。
uj5u.com熱心網友回復:
找到了解決方案:我需要覆寫 AfterAddApplication 以便我可以訪問IServiceCollection.
protected override void AfterAddApplication(IServiceCollection services)
{
base.AfterAddApplication(services);
var fakeRepo = Substitute.For<IMyRepository>();
fakeRepo.GetList().Returns(Task.FromResult(new List<Guid>()));
services.Replace(ServiceDescriptor.Transient(typeof(IMyRepository), _ => fakeRepo));
}
但是,這將迫使我在所有測驗中使用相同的替代品。每個測驗我不能有不同的實體。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/523265.html
上一篇:為什么我的單元測驗檔案中的dataProvider函式不能正常作業?
下一篇:如何使彈出視頻回應于移動設備
