2

我使用最小起订量和我的问题 Tfs 属性 (ItemSet),如何使用最小起订量,因为 ItemSet 只能获得...

public sealed class ItemSet
{
    public Item[] Items { get; }
    public string Pattern { get; }
    public string QueryPath { get; }

    public override string ToString();
}

样本,

ItemSet allItems = versionControl.GetItems(@"$/");

如何在单元测试和模拟中写作?

4

2 回答 2

2

您不能使用 Moq 来模拟密封类。

您可以编写一系列封装密封 TFS 类的代理,其中每个代理都基于您可以用来编写测试的抽象。

通常(特别是对于像集合这样的对象),可以使用密封类并使用测试构建器类或类似的类来消除实例化所有依赖项并将所有内容插入在一起的痛苦。在您的情况下,您需要创建所有项目、模式和查询路径(以及每个项目的所有依赖项,如果有的话)并创建一个具有测试安全值的真实项目集。

于 2012-05-21T17:26:40.247 回答
1

您可以在这样的非密封类上使用 SetupGet 方法。

Mock<ItemSet> itemSetMock = new Mock<ItemSet>();
itemSetMock.SetupGet(x => x.Items).Returns(someItems);

我不知道 Moq 如何处理密封类,但在单元测试中模拟抽象而不是具体类是个好主意。

于 2012-05-16T07:48:42.773 回答