Esempio n. 1
0
        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);
        }