Вы на самом деле тестируете эту строку кода:
dispatcher.Invoke(() => dialogService.Prompt(message));
Ваш класс вызывает макет, чтобы вызвать метод другого макета. Обычно это просто, вам просто нужно убедиться, что Invoke вызывается с правильными аргументами. К сожалению, аргумент является лямбда и не так легко оценить. Но, к счастью, это вызов макета, который снова облегчает: просто позвоните и убедитесь, что другой макет был вызван:
Action givenAction = null;
mockDipatcher
.AssertWasCalled(x => x.Invoke(Arg<Action>.Is.Anything))
// get the argument passed. There are other solutions to achive the same
.WhenCalled(call => givenAction = (Action)call.Arguments[0]);
// evaluate if the given action is a call to the mocked DialogService
// by calling it and verify that the mock had been called:
givenAction.Invoke();
mockDialogService.AssertWasCalled(x => x.Prompt(message));