![](/img/trans.png)
[英]Expected invocation on the mock exactly 5 times, but was 0 times with properly mocked arguments
[英]Expected invocation on the mock exactly 1 times, but was 0 times
我正在嘗試使用 Nunit 測試用 Mocking 測試我的數據庫。 我想看看我正在使用的方法是否被調用。 我試圖找出方法 Insert() 是否是從方法 InsertTours() 調用的。
當我運行單元測試時,程序會給我一條錯誤消息:
Expected invocation on the mock exactly 1 times, but was 0 times: _ => _.Insert(Tours)
我附上了我的代碼截圖。
我試過的:
_=>_.Insert(It.IsAny<Tours>())
[Test]
public void Insert_ToursAreInsertedToTable()
{
var tour = GetSampleTours()[0];
var mock = AutoMock.GetLoose();
mock.Mock<ITourRepository>()
.Setup(_ => _.Insert(tour));
var cls = mock.Create<DatabaseLogic>();
cls.InsertTours(tour);
mock.Mock<ITourRepository>()
.Verify(_=>_.Insert(It.IsAny<Tours>()), Times.Exactly(1));
}
被測對象
public class DatabaseLogic
{
public ITourRepository TourRepository = new TourRepository();
public ObservableCollection<Tours> LoadTours()
{
ObservableCollection<Tours> tourCollection = new();
var getTours = TourRepository.GetTours();
foreach (var tours in getTours.ToList().Select(variable => new Tours
{
TourId = variable.TourId,
TourName = variable.TourName,
TourSource = variable.TourSource,
TourDestination = variable.TourDestination,
TourDistance = variable.TourDistance,
TourDescription = variable.TourDescription,
TourRoute = variable.TourRoute
}))
{
tourCollection.Add(tours);
}
return tourCollection;
}
public void InsertTours(Tours tours)
{
tours.TourRoute = tours.TourSource + "_" + tours.TourDestination;
TourRepository.Insert(tours);
}
public void DeleteTours(Tours tourData)
{
TourRepository = new TourRepository();
var tours = new Tours
{
TourName = tourData.TourName
};
TourRepository.Delete(tours.TourId);
}
}
解決了
我使用以下內容擴展了 class DatabaseLogic
:
private readonly ITourRepository _iTourRepository = new TourRepository();
DatabaseLogic(ITourRepository iTourRepository)
{
_tourTourRepository = iTourRepository;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.