xUnit .NET Core Несколько входных данных InlineData с соответственно разными ожиданиями - PullRequest
1 голос
/ 24 апреля 2019
        [Theory]
        [InlineData("atv,atv,atv,hdm")]
        [InlineData("nx9,nx9,atv,nx9,nx9,nx9")]
        [InlineData("nx9,nx9,atv,nx9,nx9,nx9,nx9")]
        public void Buy3Pay2(string input)
        {           
            var co = new Checkout(rules);

            var stock = input.Split(',');

            foreach (var item in stock)
            {
                var product = products.SingleOrDefault(p => string.Compare(item, p.SKU, true) == 0);
                Item realItem = new Item() {
                    Name = product.Name,
                    SKU = product.SKU,
                    Price = product.Price
                };
                realItem.ID = Guid.NewGuid().ToString();
                co.Scan(realItem);
            }

            var total = co.Total();

            total.Should().Be(249.00M);
            //total.Should().Be(531.00M); for the second input
            //total.Should().Be(698.00M); for the 3rd input
        }

Как я могу установить ожидаемые результаты в соответствии с различными данными InlineData?

1 Ответ

2 голосов
/ 24 апреля 2019

Добавьте его (ожидание) в качестве входных данных и используйте его для подтверждения

Например

[Theory]
[InlineData("atv,atv,atv,hdm", "249.00")]
[InlineData("nx9,nx9,atv,nx9,nx9,nx9", "531.00")]
[InlineData("nx9,nx9,atv,nx9,nx9,nx9,nx9", "698.00")]
public void Buy3Pay2(string input, string expected) {
    //Arrange
    var co = new Checkout(rules);

    var stock = input.Split(',');

    foreach (var item in stock) {
        var product = products.SingleOrDefault(p => string.Compare(item, p.SKU, true) == 0);
        Item realItem = new Item() {
            Name = product.Name,
            SKU = product.SKU,
            Price = product.Price
        };
        realItem.ID = Guid.NewGuid().ToString();
        co.Scan(realItem);
    }

    //Act
    var total = co.Total();

    //Assert
    total.Should().Be(Convert.ToDecimal(expected));            
}
...