http://structuremap.github.io/generics/

ой контроллер:

public class BlogController : Controller
{
    private IDAO<Blog> _blogDAO;
    private readonly ILogger<BlogController> _logger;

    public BlogController(ILogger<BlogController> logger, IDAO<Blog> blogDAO)
    {
        this._blogDAO = blogDAO;
        this._logger = logger;
    }
    public IActionResult Index()
    {
        var blogs = this._blogDAO.GetMany();
        this._logger.LogInformation("Index page say hello", new object[0]);
        return View(blogs);
    }
}

Как вы можете видеть, у меня есть 2 зависимости,IDAO иILogger

И это мой тестовый класс, я использую xUnit для тестирования и Moq для создания макета и заглушки, я могу издеватьсяDAO легко, но сILogger Я не знаю, что делать, поэтому я просто передаю null и закомментирую вызов для входа в контроллер при запуске test. Есть ли способ проверить, но все равно сохранить регистратор как-то?

public class BlogControllerTest
{
    [Fact]
    public void Index_ReturnAViewResult_WithAListOfBlog()
    {
        var mockRepo = new Mock<IDAO<Blog>>();
        mockRepo.Setup(repo => repo.GetMany(null)).Returns(GetListBlog());
        var controller = new BlogController(null,mockRepo.Object);

        var result = controller.Index();

        var viewResult = Assert.IsType<ViewResult>(result);
        var model = Assert.IsAssignableFrom<IEnumerable<Blog>>(viewResult.ViewData.Model);
        Assert.Equal(2, model.Count());
    }
}

Ответы на вопрос(6)

Ваш ответ на вопрос