如何对输入到方法的列表小于 100 进行单元测试

本文关键字:小于 单元测试 列表 输入 方法 | 更新日期: 2023-09-27 18:37:08

>我有这个测试

[Test]
public void SaveInventoryItemLoad_Will_Call_WCF_Service_SaveInventoryItemLoad()
{ 
    adapter.SaveInventoryItemLoad(new List<InventoryItemLoadProxy>());
    itemMasterBusinessClientMock.Verify(x => x.SaveInventoryItemLoad(It.IsAny<List<InventoryItemLoadProxy>>()), Times.Once());
}

这很好,因为我已经在 WCF 方面进行了测试,该方法达到了我想要的效果,所以我只需要说"嘿,你打电话给服务了吗?是啊!不过现在...我需要将所述列表分解为 10 个或更少的卡盘,即包含 23 个项目的列表将是三个 10、10 和 3 的列表。因此,第一步当然是编写一个单元测试,以验证我没有将超过十个项目推送到 SaveInventoryItemLoad 方法。我当然可以验证该方法被称为 X 次数,但这不是我想要的。我想确保提供给该方法的列表是 <= 10,但我似乎无法弄清楚如何。我拖钓了最小起订量快速入门,但不明白我该怎么做。

我虽然这会以某种方式做到这一点

// Verify setter with an argument matcher
mock.VerifySet(foo => foo.Value = It.IsInRange(1, 5, Range.Inclusive));

但我似乎无法做到这一点。我想我以前从未遇到过这种情况。有人知道如何做到这一点吗?

谢谢

如何对输入到方法的列表小于 100 进行单元测试

我没有

使用Moq,只有Rhino.Mocks,但我认为您应该能够将原始代码从It.IsAny<List<InventoryItemLoadProxy>>更改为限制它不是任何列表,而是不超过10个项目的列表。

从在线快速浏览来看,语法可能类似于It.Is<List<InventoryItemLoadProxy>>(list => list.Count <= 10)

这是代码:

itemMasterBusinessClientMock.Verify(x => x.SaveInventoryItemLoad(It.Is<List<InventoryItemLoadProxy>>(l=>l.Count < 100)), Times.Once());

以下是几个示例。