Как отменить вызов установки для moq Mock? - PullRequest
0 голосов
/ 17 мая 2018

Это может быть особый случай использования, с которым я здесь имею дело.Вот как выглядит мой простой тест C # NUnit, использующий Moq,

Mock<ISomeRepository> mockR = new Mock<ISomeRepository>();
mockR.Setup(x => x.GetSomething).Returns(new Something(a=1,b=2);
--use the mocked repository here

Теперь, позже, в этом же модульном тесте или другом тестовом примере, я хочу вызвать реальную реализацию метода GetSomething () для этого объекта mockR.,Есть способ сделать это?Мой репозиторий Синглтон в своем сердце.Поэтому, даже если я создаю новый объект, метод GetSomething по-прежнему возвращает тот же объект Moq.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Моды используются для представления зависимостей класса, позволяющих тестировать этот класс без использования их фактических зависимостей.Или вы можете делать тесты, которые включают в себя фактические зависимости.

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

Если это другой контрольный пример , это тоже не должно быть проблемой.Каждый тест не должен влиять на другой, поэтому, если вы настраиваете тестируемый класс отдельно, это должно быть хорошо, даже с одноэлементным.

Я предполагаю, что вы вводите одноэлементную зависимость.Если нет, сделай это.

0 голосов
/ 17 мая 2018

Это во многом будет зависеть от вашей реализации этого GetSomething, который вы здесь не показываете;). Кроме того, я не уверен, что это даже правильная установка, разве там не должно быть .Setup(..).Returns(..)?

...