簡體   English   中英

對模擬的預期調用恰好 1 次,但為 0 次

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM