我有被嘲笑的類,但在某些情況下,我需要運行原來的方法起訂量爲callbase異步方法不起作用
public virtual async Task<int> SaveChangesAsync(string userId)
{
try
{
TrackChanges(userId);//sets some fields
return await db.SaveChangesAsync();
}
catch (Exception e)
{
LogSaveValidationFailed(e);
throw;
}
}
我已經試過CallBase = true
,但它沒有爲async
方法的工作,也嘗試過解決方法與CallBack
...
var db = new Mock<DbContext>();
db.CallBase = true;
db.Setup(x => x.SaveChangesAsync(It.IsAny<string>())).ReturnsAsync(1).Callback((string user) =>
{
db.Object.SaveChanges(user);
});
...返回值芽永遠不會調用回調。 一切工作正常的方法,但不適用於異步。 我可以做些什麼來使它與Moq一起工作,或者更好的重構一下並將TrackChanges
從異步方法移動到正常?
是失敗'IDbContext'是一個類或接口? 'CallBase'將不能在接口上工作... –
固定代碼示例,它是一個類 –
爲什麼你想要調用原始方法?基本上'SaveChangesAsync'在新的'Task'中調用'SaveChanges',所以你可以使用真正的'DbContext'而不是假的'...還有一件事你如何驗證原始的'SaveChanges'沒有被調用? –