Это работает для меня.
new Thread(() =>
{
Thread.CurrentThread.IsBackground = false;
Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, (SendOrPostCallback)delegate {
//Your Code here.
}, null);
}).Start();
Насмешка класса совершенно допустима. С MoQ можно только дразнить виртуальные методы и свойства на классе, все же.
полезно, когда у Вас есть абстрактные базовые классы вместо интерфейсов или классы с реализациями по умолчанию и virtuals как точки расширения. Существует много случаев, где у Вас нет доступа к исходному коду классов, необходимо дразнить. Существует много примеров в платформе .NET, например, MembershipProvider.
Если класс не реализует интерфейс или если бы платформа насмешки позволяет частичные насмешки затем, Вы хотели бы смочь дразнить класс. В бывшем случае, потому что нет никакого интерфейса для насмешки. В последнем, таким образом, можно наследовать существующее поведение от класса, который Вы не хотите дразнить.
Как правило, хотя, Вы хотели бы, чтобы Ваши классы зависели от интерфейсов, когда доступно. В этом случае Вы не должны дразнить класс, который реализует интерфейс. Необходимо просто дразнить сам интерфейс для предотвращения любых зависимостей в тесте, которые не существуют в классе под тестом.