I am trying to mock the below method but the updateRefundReqeust returns null instead updated record.
public async Task<bool> InvokeAsync(Batch batch)
{
var refundRequests = await this.RefundRequestRepository.GetsAsync(batch.RefundRequests.Select(x => x.Id));
foreach (var getRefundRequest in refundRequests)
{
getRefundRequest.Status = RefundRequestStatus.Closed;
getRefundRequest.LastUpdatedBy = "Test User";
RefundRequest updateRefundReqeust = await UpdateRefund.InvokeAsync(getRefundRequest);
//Returns null instead of updated record
}
}
Unit test and Mocking method
[Fact]
public async Task Post_Batch()
{
var refundRequests = await this.RefundRequestRepository.GetsAsync(batch.RefundRequests.Select(x => x.Id));
foreach (var getRefundRequest in refundRequests)
{
this.MockUpdateRefund
.Setup(x => x.InvokeAsync(getRefundRequest))
.Returns(async () =>
{
getRefundRequest.Status = RefundRequestStatus.Closed;
getRefundRequest.LastUpdatedBy = Factory.RefundRequest.TestUserName;
return await Task.Run(() => getRefundRequest);
});
}
var postRefund = await PostBatch.InvokeAsync(batch);
//Assert
postRefund.ShouldNotBeNull();
postRefund.IsPosted.ShouldBeTrue();
}
Is something missed in the Mocking? Please let me know if more stuffs are required to support the question.