Насколько я могу судить, класс Client
не имеет отношения к этому вопросу? Вы просто хотите проверить звонки ProcessRequest.Process
звонки EventRaiserClass.RaiseEventForClient
.
Простой способ, без каких-либо насмешек, используя EventRaiserClass
:
var eventRaiser = new EventRaiserClass();
bool eventRaised = false;
eventRaiser.SendEventToClient += (o, e) => eventRaised = true;
var processRequest = new ProcessRequest(eventRaiser);
processRequest.Process(someJObject);
Assert.True(eventRaised);
Вы можете пойти дальше, ипроверьте, что событие вызывается ровно один раз:
// Arrange
var eventRaiser = new EventRaiserClass();
int eventRaisedCount = 0;
eventRaiser.SendEventToClient += (o, e) => eventRaisedCount++;
var processRequest = new ProcessRequest(eventRaiser);
// Act
processRequest.Process(someJObject);
// Assert
Assert.Equal(1, eventRaisedCount);
Если вы не хотите полагаться на EventRaiserClass
и используете фальшивый фреймворк, вы можете сделать что-то подобное (я использую Moq в этом примере):
// Arrange
var eventRaiser = Mock<IEventRaiser>();
var processRequest = new ProcessRequest(eventRaiser.Object);
// Act
processRequest.Process(someJObject);
// Assert
eventRaiser.Verify(x => x.RaiseEventForClient());
То же самое с использованием NSubstitute :
// Arrange
var eventRaiser = Substitute.For<IEventRaiser>();
var processRequest = new ProcessRequest(eventRaiser);
// Act
processRequest.Process(someJObject);
// Assert
eventRaiser.Received().RaiseEventForClient();
В качестве отдельной заметки, подумайтенемного о том, как вы называете свои классы. Большинство стандартов кодирования говорят, что имена классов должны быть названы с использованием существительного или существительной фразы и не должны заканчиваться на "Class".
Так что Client
в порядке, но EventRaiserClass
заканчивается Class
. Рассмотрим что-то вроде EventRaiser
.
ProcessRequest
- это не существительное или не существительная фраза - это звучит как инструкция («обработайте этот запрос»), как правило, вы бы назвали метод,не класс. Рассмотрим что-то вроде RequestProcessor
, который является объектом, который обрабатывает запросы.