Каково различие между Moq-лугом класс или интерфейс?

Это работает для меня.

        new Thread(() =>
        {

        Thread.CurrentThread.IsBackground = false;
        Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, (SendOrPostCallback)delegate {

          //Your Code here.

        }, null);
        }).Start();
18
задан Don Kirkby 8 December 2008 в 20:09
поделиться

2 ответа

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

полезно, когда у Вас есть абстрактные базовые классы вместо интерфейсов или классы с реализациями по умолчанию и virtuals как точки расширения. Существует много случаев, где у Вас нет доступа к исходному коду классов, необходимо дразнить. Существует много примеров в платформе .NET, например, MembershipProvider.

16
ответ дан 30 November 2019 в 09:11
поделиться

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

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

1
ответ дан 30 November 2019 в 09:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: