c# - xUnit .NET Core 多个 InlineData 输入分别具有不同的期望
问题描述
[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));
}
推荐阅读
- python - Python / Pandas数据框:程序停止时完成写入文件
- c# - 尝试使用 C# 登录网站时出现错误请求
- python - 如何在 python tkinter 中检查文本文件中的数据?登录系统不工作
- debian - sudo apt-key adv --recv-keys --keyserver keys.gnupg.net AEF0CF8
- javascript - A/libc:致命信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR),tid 8890 (RenderThread) 中的故障地址 0x20,pid 8833
- java - log4j2 中的渲染器有其他替代解决方案吗?
- docker - 在 docker 镜像中开启 VPN 并同时运行代码
- aws-lambda - Micronaut 错误正文未在 AWS Lambda 上显示
- html - CSS - 调整项目大小以保持在容器约束内的 Flex 网格
- regex - 正则表达式:在空格前的逗号后提取单词