0
respostas

Seria esse código válido para usar o ClassData?

Classe LeilaoTerminaPregaoData

using System.Collections;
using System.Collections.Generic;
using Alura.LeilaoOnline.Core;

namespace Alura.LeilaoOnline.Tests
{
    public class LeilaoTerminaPregaoData : IEnumerable<object[]>
    {
        public IEnumerator<object[]> GetEnumerator()
        {
            var leilaoCenario1 = new Leilao("Peça");
            var lancesCenario1 = new List<Lance> {
                new Lance(new Interessada(string.Empty, leilaoCenario1), 800),
                new Lance(new Interessada(string.Empty, leilaoCenario1), 900),
                new Lance(new Interessada(string.Empty, leilaoCenario1), 1_000),
                new Lance(new Interessada(string.Empty, leilaoCenario1), 1_100)
            };

            yield return new object[] {
                lancesCenario1[3],
                leilaoCenario1,
                lancesCenario1
            };

            Leilao leilaoCenario2 = new Leilao("Peça");
            var lancesCenario2 = new List<Lance> {
                new Lance(new Interessada(string.Empty, leilaoCenario2), 800),
                new Lance(new Interessada(string.Empty, leilaoCenario2), 900),
                new Lance(new Interessada(string.Empty, leilaoCenario2), 1_000),
                new Lance(new Interessada(string.Empty, leilaoCenario2), 700)
            };

            yield return new object[] {
                lancesCenario2[2],
                leilaoCenario2,
                lancesCenario2
            };

            Leilao leilaoCenario3 = new Leilao("Peça");
            var lancesCenario3 = new List<Lance> {
                new Lance(new Interessada(string.Empty, leilaoCenario3), 800)
            };

            yield return new object[] {
                lancesCenario3[0],
                leilaoCenario3,
                lancesCenario3
            };
        }

        IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
    }
}

Método de teste na classe LeilaoTerminaPregao

        [Theory]
        [ClassData(typeof(LeilaoTerminaPregaoData))]
        public void RetornaMaiorLanceDadoLeilaoComPeloMenosUmLance(Lance ganhador, Leilao leilao, List<Lance> lances)
        {
            // Arrange

            foreach (var lance in lances)
            {
                leilao.RecebeLance(lance.Cliente, lance.Valor);
            }

            // Act
            leilao.TerminaPregao();
            //Assert
            Assert.Equal(ganhador.Cliente, leilao.Ganhador.Cliente);
            Assert.Equal(ganhador.Valor, leilao.Ganhador.Valor);
        }

Seria assim?

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