Возникли проблемы с получением метода Mocked для возврата null - PullRequest
0 голосов
/ 21 сентября 2018

Я издеваюсь над методом, используя Moq, и хочу, чтобы метод возвратил null , но он не возвращает null , и я не уверен, почему.

Это мой установочный код:

var mock2 = new Mock<ReminderRepository>(stubPatientRemindersDBModelContainer);
mock2.CallBase = true;
mock2.Setup(x => x.GetPatientEscalations(userName, patientId, startDateTime, endDateTime, new DataTable()))
    .Returns((PatientEscalationsDto)null);

При отладке я надеялся, что переменная, присвоенная GetPatientEscalations, будет null , но это не так.

Что я делаю не так?

1 Ответ

0 голосов
/ 21 сентября 2018

Проверьте аргументы, передаваемые в макет установки.

 mock2
    .Setup(x => x.GetPatientEscalations(userName, patientId, startDateTime, endDateTime, new DataTable()))
    .Returns((PatientEscalationsDto)null);

, если они не совпадают с тем, что фактически было передано при вызове члена, он вернется к базовому вызову, так как вы включили CallBase.

Попробуйте ослабить ожиданиесмоделированный член, использующий It.IsAny<T>() совпадения аргументов

 mock2
    .Setup(x => x.GetPatientEscalations(
        It.IsAny<string>(), 
        It.IsAny<int>(), //this is an assumption. use desired type here
        It.IsAny<DateTime>(), 
        It.IsAny<DateTime>(), 
        It.IsAny<DataTable>()))
    .Returns((PatientEscalationsDto)null);

Таким образом, любые передаваемые аргументы будут совпадать и вызывать смоделированные члены для поведения, как и ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...