यह मेरा नियंत्रक है:
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
और यह मेरी परीक्षा की कक्षा है, मैं मॉक और स्टब बनाने के लिए टेस्ट और Moq का उपयोग करने के लिए xUnit का उपयोग करता हूं, मैं आसानी से मॉक कर सकता हूं DAO
, लेकिन ILogger
मुझे नहीं पता कि मुझे क्या करना है इसलिए मैं अभी पास हूं और कंट्रोलर में लॉग इन करने के लिए कॉल को कमेंट करता हूं। जब परीक्षण चलाते हैं। वहाँ परीक्षण करने के लिए एक रास्ता है, लेकिन अभी भी लकड़हारा किसी भी तरह रखना है?
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
। उन्होंने अपने ब्लॉगपोस्ट में कुछ अच्छे सुझाव दिए हैं और मैं अपने समाधान के साथ आया हूं जो नीचे दिए गए उत्तर में अधिकांश परेशानियों को हल करने के लिए लगता है ।