Подтвердить что ты не робот

Moq - убедитесь, что методы не были вызваны

Это единичный тест от одного из моих контроллеров в проекте 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?

4b9b3361

Ответ 1

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

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

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