Bu benim denetleyicim:
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);
}
}
Gördüğünüz gibi 2 bağımlılığım var, a IDAOve aILogger
Ve bu benim test sınıfım, test etmek için xUnit ve sahte ve saplama oluşturmak için Moq kullanıyorum, DAOkolay alay edebilirim , ancak ILoggerne yapacağımı bilmiyorum, bu yüzden sadece null geçirip denetleyiciye giriş yapma çağrısını yorumluyorum test çalıştırıldığında. Test etmenin ama yine de kaydediciyi bir şekilde tutmanın bir yolu var mı?
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());
}
}
ILogger. Blog gönderisinde bazı iyi önerileri var ve aşağıdaki cevaptaki sorunların çoğunu çözecek gibi görünen çözümümle geldim .