Тестирование репозитория с помощью MSTest и Moq - .Verify не работает - PullRequest
2 голосов
/ 18 февраля 2011

Я сейчас смотрю на написание модульных тестов для базового таймера выполнения с Moq. Когда таймер остановлен, вызывается функция, которая добавляет все тайминги в базу данных, и мне нужно проверить, была ли вызвана вставка. Я использовал подобный тип теста для тестирования вставок через homecontroller, но это делается напрямую.

// Calls AddToLog() which iterates through the list 
// adding all entries to the database

_timer.Stop(); 
_repository.Verify(x => x.Insert(TimerObject));

Я получаю ошибку:

Expected invocation on the mock at least once, but was never performed: x => x.Insert(.splitTimer)

Performed invocations:
ITimersRepository.Insert(EF.Domain.Entities.Timer)
ITimersRepository.Insert(EF.Domain.Entities.TimerSplit)
ITimersRepository.Save()

метод addToLog () вызывающе вызывается и вызывает .insert для хранилища. Я не совсем уверен, почему он возвращается как не вызываемый?

Любые идеи были бы великолепны.

Спасибо

1 Ответ

0 голосов
/ 11 апреля 2011
_timerRepository.Verify(x => x.Insert(It.IsAny<Timer>()));

Это делает то, что мне нужно. Он проверяет, была ли вставка запущена с типом Timer и не является специфической (поскольку это не может быть так, как объект создается где-либо еще)

...