Segue meu código para entender:
[Theory]
[InlineData (2, new double[] { 100, 0, 400, -100, -300})]
public void NaoAceitaLanceDadoValorLanceMenorQueZero(int valorEsperado, double[] lances)
{
var leilao = new Leilao("Monalisa");
var fulano = new Interessada("Fulano", leilao);
var maria = new Interessada("Maria", leilao);
leilao.IniciarPregao();
for(int i = 0; i < lances.Length; i++)
{
var valor = lances[i];
if (i % 2 == 0)
{
leilao.ReceberLance(maria, valor);
}
else
{
leilao.ReceberLance(fulano, valor);
}
}
leilao.TerminaPregao();
var valorObtido = leilao.Lances.Count();
Assert.Equal(valorEsperado, valorObtido);
}
Esse é o teste que eu estou tentando bolar pra fazer o exercício
Acrescentei na regra para Lance aceito ou não, que ele tem que ser maior ou igual a zero:
private bool LanceAceito(Interessada cliente, double valor)
{
return (EstadoLeilao == EstadoLeilao.LeilaoEmAndamento) && (cliente != _ultimoCliente) && (valor >= 0);
}
No meu teste eu coloquei vários valores em cima como você viu. No caso ele só deveria deixar passar 2, porque o cliente só pode fazer 1 lance e os outros são negativos.
Só que meu teste não está passando. Está vindo 3 lances. Acredito que ele esteja pegando o 400 de alguma forma.
Mensagem:
Assert.Equal() Failure
Expected: 2
Actual: 3
A dificuldade que tenho é que não sei o valor que está recebendo exatamente. Eu queria saber como faz para debuggar em relação a testes. Porque quando coloco um breakpoint na classe que tem o método ReceberLance(), cada hora ele recebe um valor diferente porque eu já tenho vários testes. Como faço para debuggar para um teste em específico? Para o método receber os valores só desse teste que escrevi acima. Porque se eu debuggar vou conseguir entender melhor o problema. O exercício não pediu para desenvolver o teste todo, mas eu to tentando fazer sozinha pra ver se aprendo.
Att
Karolina Bento