public void DadaTarefaComInfoValidaDeveLogar() { //arrange string TituloTarefaEsperado = "Usar Moq para aprofundar conhecimento de API"; LogLevel logLevelCapturado = LogLevel.Trace; string logMensagemCapturado = string.Empty; var command = new CadastraTarefa(TituloTarefaEsperado, new Categoria("Estudo"), new DateTime(2019, 12, 31)); var mockLogger = new Mock <ILogger <CadastraTarefaHandler> >(); CapturaLog captura = (logLevel, eventId, state, exception, function) => { logLevelCapturado = logLevel; logMensagemCapturado = function(state, exception); }; mockLogger.Setup(l => l.Log( It.IsAny <LogLevel>(), It.IsAny <EventId>(), It.IsAny <object>(), It.IsAny <Exception>(), It.IsAny <Func <object, Exception, string> >()) ).Callback(captura); var mockRepositorioTarefas = new Mock <IRepositorioTarefas>(); var handler = new CadastraTarefaHandler(mockRepositorioTarefas.Object, mockLogger.Object); //action var resultado = handler.Execute(command); //assert Assert.Equal(LogLevel.Information, logLevelCapturado); Assert.Contains(TituloTarefaEsperado, logMensagemCapturado); }
public void DadaTarefaComInformacoesValidasDeveLogar() { //arrange var comando = new CadastraTarefa("Estudar Xunit", new Categoria("Estudo"), new DateTime(2019, 12, 31)); var mockLogger = new Mock <ILogger <CadastraTarefaHandler> >(); LogLevel levelCapturado = LogLevel.Error; string mensagemCapturada = string.Empty; CapturaLog capturaLog = (level, eventId, state, exception, func) => { levelCapturado = level; mensagemCapturada = func(state, exception); }; mockLogger.Setup(l => l.Log( It.IsAny <LogLevel>(), // nível de log => LogError It.IsAny <EventId>(), // identificador do evento It.IsAny <object>(), // objeto que sera logado It.IsAny <Exception>(), // excecao que sera logada It.IsAny <Func <object, Exception, string> >() // funcao que converte objeto + exceção em string )).Callback(capturaLog); var mock = new Mock <IRepositorioTarefas>(); //var repo = new RepositorioFake(); //Dublê para o teste var handler = new CadastraTarefaHandler(mock.Object, mockLogger.Object); //act handler.Execute(comando); //assert Assert.Equal(LogLevel.Error, levelCapturado); Assert.Contains("Estudar Xunit", mensagemCapturada); }