Page 1 of 1

So führen Sie einen Unit-Test mit ILogger in ASP.NET Core durch

Posted: 27 Jan 2025, 04:47
by Guest
Das ist mein Controller:

Code: Select all

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

public BlogController(ILogger logger, IDAO 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);
}
}
< /code>

Wie Sie sehen, habe ich 2 Abhängigkeiten, einen IDAO < /code> und einen Iloogger < /code> < /p>

und dies ist meine Testklasse. Ich verwende Xunit zum Testen und MOQ, um Schein und Stub zu erstellen. Ich kann Dao 
einfach verspotten, aber mit dem Iloogger weiß ich nicht, was ich tun soll, ich bin ich Geben Sie einfach NULL weiter und kommentieren Sie den Anruf zum Anmeldung im Controller beim Ausführen von Test. Gibt es eine Möglichkeit zu testen, aber den Logger trotzdem irgendwie zu behalten? < /P>

Code: Select all

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

var result = controller.Index();

var viewResult = Assert.IsType(result);
var model = Assert.IsAssignableFrom(viewResult.ViewData.Model);
Assert.Equal(2, model.Count());
}
}