Moq - убедитесь, что методы не были вызваны - PullRequest
35 голосов
/ 04 июля 2010

Это модульный тест одного из моих контроллеров в проекте ASP.NET MVC с использованием NUnit и Moq:

[Test]
public void Create_job_with_modelstate_errors_fails()
{
    var job = new JobDto();
    this.controller.ModelState.AddModelError("", "");

    ActionResult result = this.controller.Create(job);

    this.jobService.Verify(p => p.SaveJob(It.IsAny<JobDto>()), Times.Never());

    // some other asserts removed for brevity
}

Это прекрасно работает, но с точки зрения обслуживания я думаю, что эта строка более многословна, чем должна быть:

this.postService.Verify(p => p.SavePost(It.IsAny<PostDto>()), Times.Never());

То, что я действительно хотел бы сделать, это что-то эквивалентное ...

this.postService.VerifyNoMethodsCalled();

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

1 Ответ

44 голосов
/ 05 июля 2010

Вы можете создать Mock с MockBehavior.Strict, например,

this.postService = new Mock<IPostService>(MockBehavior.Strict);

Таким образом, если вы не настроите никаких ожиданий, любые вызовы this.postService завершатся с ошибкой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...