測驗方法總是失敗。在該Setup方法UpdateAsync應該在結果中回傳 1 但它始終保持為 0 之后,這會導致控制器方法中的例外。
你能告訴我在這里缺少什么嗎?
[Test]
public async Task UpdateImportHeaderAsyncTest()
{
//Arrange
HeaderRequest request = new HeaderRequest()
{
ConfigurationId = 1,
Key = "1",
Status = 1
};
_manager.Setup(a => a.UpdateAsync(_mockData.Header)).Returns(Task.FromResult(1));
//Act
var actual = await Controller.UpdateHeaderAsync(request);
//Assert
Assert.NotNull(actual);
}
//Controller Method
[HttpPut]
public async Task<int> UpdateHeaderAsync(HeaderRequest request)
{
var result = 0;
try
{
result = await _manager.UpdateAsync(new Header()
{
HeaderId = request.Id,
Status = request.Status,
ConfigurationId = request.ConfigurationId
});
if (result == 0)
{
throw new RecordNotFoundException("No records found.", "1", "");
}
}
catch (Exception ex)
{
throw;
}
return result;
}
uj5u.com熱心網友回復:
放松引數匹配使用It.IsAny<Header>()以獲得所需的行為。
//...
_manager
.Setup(a => a.UpdateAsync(It.IsAny<Header>()))
.ReturnsAsync(1);
//...
該設定還允許ReturnsAsync設定異步成員。
之前發生的事情是您使用特定的參考實體設定它。自從您初始化了一個new Header. 這導致模擬回傳回傳型別的默認值。
參考Moq Quickstart以更好地了解如何使用該框架
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/362332.html
