0
respostas

Setup de método no mock

Bom dia,

Durante uma parte do curso o professor fez trecho de código:


      var dummy = new Categoria("Dummy");
      var tarefas = new List<Tarefa>
      {
          //atrasadas a partir de 1/1/2019
          new Tarefa(1, "Tirar lixo", dummy, new DateTime(2018,12,31), null, StatusTarefa.Criada),
          new Tarefa(4, "Fazer o almoço", dummy, new DateTime(2017,12,1), null, StatusTarefa.Criada),
          new Tarefa(9, "Ir à academia", dummy, new DateTime(2018,12,31), null, StatusTarefa.Criada)
      };

      var mock = new Mock<IRepositorioTarefas>();
            mock.Setup(r => r.ObtemTarefas(It.IsAny<Func<Tarefa, bool>>()))
                .Returns(tarefas);
            var repo = mock.Object;

      var handler = new GerenciaPrazoDasTarefasHandler(repo);
      //Define que a data é 01/01/2019 para fazer a separação das tarefas atrasadas
      var comando = new GerenciaPrazoDasTarefas(new DateTime(2019, 1, 1));

      handler.Execute(comando);

      mock.Verify(r => r.AtualizarTarefas(It.IsAny<Tarefa[]>()), Times.Once());

Porém não entendi a razão de fazer o setup do método ObtemTarefas, a ideia dele é fazer com que o retorno desse método seja sempre a lista de tarefas que definimos no início? Eu testei com e sem o setup do mock e o teste passou, imagino que porque o que estávamos testando não tava relacionado diretamente com a lista, com algo do time mock.Verify(r => r.AtualizarTarefas(It.IsAny<Tarefa[]>()), Times.Exacly(tarefas.Count())).

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software