第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

模擬 IEnumerable<T> 返回 null

模擬 IEnumerable<T> 返回 null

C#
慕容3067478 2023-09-16 17:00:03
我正在使用 XUnit 單元測(cè)試來(lái)測(cè)試 .NET Core 2.1 中的 API 控制器。我正在使用最小起訂量來(lái)模擬我的接口存儲(chǔ)庫(kù)。當(dāng)我進(jìn)行設(shè)置時(shí)調(diào)試我的單元測(cè)試,它在到達(dá)控制器之前仍然顯示為空。我嘗試使用Returnsor構(gòu)建結(jié)果ReturnsAsync。使用單獨(dú)的函數(shù)返回列表或IEnumerable<T>.控制器[HttpGet]public async Task<IActionResult> GetPendingApprovals(){    var user = _serviceRepository.GetUserName(User);    var userId = await _serviceRepository.GetUserID(user);    var result = await _requestRepository.GetPendingApprovalsByApprover(userId);    if (!result.Any()) return NoContent();    return Ok(result);}測(cè)試private Mock<IServiceRepository> mockServiceRepo;private Mock<IRequestRepository> mockRequestRepo;private ApprovalController controller;public ApproverControllerTests(){    mockServiceRepo = new Mock<IServiceRepository>();    mockRequestRepo = new Mock<IRequestRepository>();    ILogger<ApprovalController> mockLoggerRepo = Mock.Of<ILogger<ApprovalController>>();    controller = new ApprovalController(mockRequestRepo.Object, mockServiceRepo.Object, mockLoggerRepo);}[Fact]public async Task GetPendingApprovals_HasPending_ReturnsResultAsync(){     // Arrange     var mockRequests = new List<Request>     {         new Request { Id = 1,             PONumber = "ABC0001",             RequestorId = 1,             SubmitDate = new DateTime(),             ApproverId = 2,             StatusId = 1,             Split = false,             VendorId1 = 1,             Remarks = "         },         new Request { Id = 2,             PONumber = "ABC0002",             RequestorId = 1,             SubmitDate = new DateTime(),             ApproverId = 2,             StatusId = 1,             Split = false,             VendorId1 = 1,             Remarks = "        }     };調(diào)試測(cè)試本身mockRequest為空,因此當(dāng)它進(jìn)入控制器時(shí),它滿足空檢查并且不返回任何內(nèi)容響應(yīng)。
查看完整描述

1 回答

?
月關(guān)寶盒

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊

最有可能User是空,因?yàn)槲覜]有看到任何設(shè)置,也GetUserName沒有設(shè)置做任何事情,所以它也將為空。


因此模擬的期望不匹配,默認(rèn)返回 null。


GetUserID放松對(duì)It.IsAny<string>()獲得預(yù)期行為的期望。


[Fact]

public async Task GetPendingApprovals_HasPending_ReturnsResultAsync() {

    // Arrange

    var mockRequests = getUsers();

    var userId = 1;

    mockServiceRepo

        .Setup(repo => repo.GetUserID(It.IsAny<string>()))

        .ReturnsAsync(userId);


    mockRequestRepo

        .Setup(repo => repo.GetPendingApprovalsByApprover(userId))

        .ReturnsAsync(mockRequests);


    // Act

    var result = await controller.GetPendingApprovals();


    // Assert

    var actionResult = Assert.IsType<OkObjectResult>(result);


    //...


}


List<Request> getUsers() {

    //... omitted for brevity

}


查看完整回答
反對(duì) 回復(fù) 2023-09-16
  • 1 回答
  • 0 關(guān)注
  • 123 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)