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 IDAO
ve 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, DAO
kolay alay edebilirim , ancak ILogger
ne 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 .