Bom dia,Estou com dúvida em um teste que está dando um erro de referência nula, e não está sendo possível determinar se ele falha ou passa.Aqui está a classe que ele testa:
public class GeradorDePagamento
{
private LeilaoDaoFalso leilaoDao;
private PagamentoDao pagamentoDao;
private Avaliador avaliador;
public GeradorDePagamento(LeilaoDaoFalso leilaoDao,PagamentoDao pagamentoDao,Avaliador avaliador)
{
this.leilaoDao = leilaoDao;
this.pagamentoDao = pagamentoDao;
this.avaliador = avaliador;
}
public virtual void Gera()
{
List<Leilao> encerrados = leilaoDao.encerrados();
foreach(var l in encerrados)
{
this.avaliador.avalia(l);
Pagamento pagamento = new Pagamento(this.avaliador.maiorValor, this.ProximoDiaUtil());
this.pagamentoDao.salva(pagamento);
}
}
private DateTime ProximoDiaUtil()
{
DateTime data = DateTime.Today;
DayOfWeek diaDaSemana = data.DayOfWeek;
if (diaDaSemana == DayOfWeek.Saturday)
{
data.AddDays(2);
}
else if (diaDaSemana == DayOfWeek.Sunday)
{
data.AddDays(1);
}
return data;
}
}
E esse é o teste:
[TestFixture]
class GeradorDePagamentoTest
{
private Leilao leilao;
private Usuario jorge;
private Usuario maria;
private List<Leilao> leiloes;
private Avaliador avaliador;
private Pagamento pagamentoCapturado;
[SetUp]
public void SetUp()
{
leilao = new Leilao("Playstation");
jorge = new Usuario("Jorge");
maria = new Usuario("Maria");
avaliador = new Avaliador();
leilao.propoe(new Lance(jorge, 2000));
leilao.propoe(new Lance(maria, 2500));
leiloes = new List<Leilao>();
leiloes.Add(leilao);
leilao.naData(new DateTime(1999, 5, 1));
pagamentoCapturado = null;
}
[Test]
public void DevePassarParaOProximoDiaUtil()
{
var leilaoDao = new Mock<LeilaoDaoFalso>();
var pagamentoDao = new Mock<PagamentoDao>();
GeradorDePagamento gerador = new GeradorDePagamento(leilaoDao.Object, pagamentoDao.Object, avaliador);
//ensinando o mock a retornar a lista de leiloes quando sao chamados os leiloes encerrados
leilaoDao.Setup(m => m.encerrados()).Returns(leiloes);
//quando eh chamado p.salva passando QUALQUER pagamento, executa um callback que salva o valor na variavel pagamentoCapturado
pagamentoDao.Setup(p => p.salva(It.IsAny<Pagamento>())).Callback<Pagamento>(p => pagamentoCapturado = p);
Assert.AreEqual(DayOfWeek.Monday, pagamentoCapturado.data.DayOfWeek);
}
O erro aponta para esta linha:
Assert.AreEqual(DayOfWeek.Monday, pagamentoCapturado.data.DayOfWeek);