我有一個應用程序當前按設計工作,但在擴展它之前,我嘗試使用 xUnit 設置集成測試。目前測試在執行測試時只會使用原始服務,我不明白為什么。這是測試:using IStoreRepository = Repositories.V3.Interfaces.IStoreRepository;public class StoreTests : IClassFixture<WebApplicationFactory<Startup>> { private readonly ITestOutputHelper _output; private readonly WebApplicationFactory<Startup> _factory; private readonly string _url; public StoreTests(ITestOutputHelper output, WebApplicationFactory<Startup> factory) { _output = output; _factory = factory; _url = "/api/store"; } [Theory] [InlineData("GET", "FAKE123")] public async Task StoreByCode(string method, string code = null) { // var client = _factory.CreateClient(); var client = _factory.WithWebHostBuilder(builder => { builder.ConfigureTestServices(services => { services.AddScoped<IStoreRepository, StoreRepositoryTest>(); }); }).CreateClient(); var request = new HttpRequestMessage(new HttpMethod(method), $"{_url}/{code}"); string readAsStringAsync; _output.WriteLine($"Request Uri: {request.RequestUri}"); using (var response = await client.SendAsync(request)) { response.EnsureSuccessStatusCode(); readAsStringAsync = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) { _output.WriteLine($"Not successful ({response.StatusCode}): {readAsStringAsync}"); } } var stores = JsonConvert.DeserializeObject<List<Store>>(readAsStringAsync); Assert.True(stores.Any()); }}Repository然而,當我進行測試時,實際中的斷點StoreRepository是在 Startup.cs 中注冊的,而不是 中的斷點StoreRepositoryTest。我設置我的工廠來覆蓋依賴項,但它忽略了它。我可以做什么來糾正這個問題。作為參考,我一直在使用此來源:https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests ?view=aspnetcore-2.2
2 回答

HUWWW
TA貢獻1874條經驗 獲得超12個贊
我以前見過這個。您可能在不同的命名空間中創建了一個接口。
通常,當您擁有 Web 服務的版本 1 界面,然后您決定添加新功能時,就會發生這種情況。然后,您創建一個具有完全相同名稱的版本 2 接口。
設置斷點services.AddScoped<IStoreRepository, StoreRepositoryTest>()
并進行調試。檢查結果并滾動到正在添加服務的底部;您將清楚地了解所添加的內容。

慕萊塢森
TA貢獻1810條經驗 獲得超4個贊
1)您可以嘗試使用CustomWebApplicationFactory類并在ConfigureWebHost(IWebHostBuilder builder)方法中添加builder.ConfigureServices(//定義依賴項)。?
2)或者,您可以定義自己的TestStartup類繼承自Startup類并使用它。
- 2 回答
- 0 關注
- 147 瀏覽
添加回答
舉報
0/150
提交
取消