Если я правильно понимаю ваш контекст:
- у вас тестируемый класс, который использует ArticlesService
- ваш ArticlesService (сотрудничающий класс) отвечает за отправку некоторых событий
- вы хотите убедиться, что тестируемый класс ведет себя правильно
- вы хотите сделать это, проверив события.
Если это так, вы, возможно, возлагаете на свой класс ответственность за большее, чем нужно. Вам нужно только убедиться, что ArticlesService был задан SaveAsync. Вам не нужно беспокоиться о том, что остановил и сделал ArticlesService.
Думайте об этом так. Вы проходите тестирование У вас слишком много работы, поэтому вы попросили других людей помочь вам. У вас есть два варианта. Вы можете либо преследовать их, беспокоясь о том, правильно ли они это делают, либо просто доверять им.
Вместо того, чтобы микроуправлять классами, вы можете написать отдельный тест, в котором приведены некоторые примеры того, как будет работать ArticlesService, который проверит, правильно ли выполняет ArticleService свою работу . Ответственность вашего CUT заключается в том, чтобы эффективно делегировать эту работу.
Если вам действительно нужно, чтобы события вызывались так, чтобы ваш CUT мог отвечать, это отдельный аспект его поведения, и вы можете сделать это с помощью метода Moq "Raise", описанного в "Events", здесь:
http://code.google.com/p/moq/wiki/QuickStart
Редактировать: Вы также можете использовать «CallBack», задокументированный по той же ссылке, чтобы делать вещи с передаваемыми вам аргументами, включая OnSaveCompleted. Не уверен, поможет ли это или нет; сложно увидеть, что ты делаешь без кода и провального теста. В любом случае, удачи!