簡體   English   中英

如何使用最小起訂量設置多項目列表

[英]How can I setup a multi-item list with moq

我正在嘗試為我的方法編寫單元測試但失敗了。 我想返回帶有 Mock( package Moq ) 的GetMyRequest的 2 項響應的列表,然后我運行Task.WhenAll並使用我的方法返回響應。 所以我使用了SetupSequence方法,但它返回了一個單項列表。 如何在我的測試中返回一個多項目列表。

public void MyMethod()
{
    ProductService = new Mock<IProductService>();
    var myResponse = myStringList.Select(async x => await _myService.GetMyRequest(x, null, null)).ToList();

    //my response type -> List<Task<ResponseModel>>

    var myResponses = await Task.WhenAll(myResponse);
}

我想要帶有 mocking 的myResponses多項目列表,但它是單項目。

單元測試

public async Task InitializeAsync(){
    ServiceResponse = Fixture.Build<MyModel>().CreateMany(2).ToList();
    MyService = new Mock<IProductService>();
    MyService.SetupSequence(service => service.GetMyRequest(It.IsAny<string>(), null, null))
                      .ReturnsAsync(ServiceResponse[0])
                      .ReturnsAsync(ServiceResponse[1]);
}

TL; DR:您不能為GetMyRequest返回多個項目


SetupSequence意味着您希望設置GetMyRequest的方式使得針對它的多次調用將導致不同的響應。

  • 對於第一次調用,您將收到ServiceResponse[0]的值
  • 對於第二次調用,您將收到ServiceResponse[1]的值

根據我的理解, GetMyRequest的返回類型是Task<ServiceResponse> ,這就是為什么你不能定義一個模擬來返回Task<IEnumerable<ServiceResponse>>或類似的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM