C'est mon contrôleur:
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);
}
}
Comme vous pouvez le voir j'ai 2 dépendances, IDAO
et ILogger
Et c'est ma classe de test, j'utilise xUnit de tester et de Moq de créer des maquettes et le talon, je peux maquette DAO
facile, mais avec l' ILogger
je ne sais pas quoi faire donc je viens de passer la valeur null et commentez l'appel pour vous connecter au contrôleur pour lancer le test. Est-il un moyen de tester, mais encore de maintenir l'enregistreur en quelque sorte ?
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());
}
}