c# - xUnit .NET Core 具有各自不同期望的多个 InlineData 输入

标签 c# .net-core xunit

        [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输入设置预期的结果?

最佳答案

将其(期望)添加为输入并将其用于断言

例如

[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));            
}

关于c# - xUnit .NET Core 具有各自不同期望的多个 InlineData 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55831950/

相关文章:

c# - AspNetCore MVC - 返回 RedirectToAction 被忽略

c# - 如何从 AuthorizationHandler .NET Core 获取参数

xunit - 如何使用 MassTransit 测试工具通过构造函数依赖注入(inject)测试消费者?

xunit - 使用xUnit框架进行性能测试

visual-studio - 在没有 NuGet 的情况下在 Visual Studio 上安装测试运行器

c# - 我的流不断抛出读/写超时异常

C# 在 ListView 中查找项目时出错

c# - 如何在较高级别指定要使用的数据库隔离级别?

Azure应用服务: Can't publish existing app service to Linux

asp.net - 在 .Net Core 中使用 Swagger 在 API 方法中设置自定义路径前缀