0

我一直在严格使用 Microsoft Fakes 进行单元测试。(因此,我不想要 nUnit 或其他示例。)我能够为一个我以前认为在类需要实现要存根的接口的情况下不可能的类创建一个存根。我相信由于使用依赖注入,我可以创建存根,尽管我不确定......(如果有人对此有更多信息,将不胜感激。)

尽管这本身可能是问题所在,但我希望看到一个示例,其中包含使用 VB.net 和 Microsoft Fakes 对属性 Getter 或 Setter 进行 Stub 的语法。Microsoft 几乎没有使用带有 VB.net(仅 C#)的 Fakes 的硬示例,这花费了我数小时试图确定差异,因为 Vb.net 本身对我来说也有点新。

具体来说,在这个例子中,我们有一个名为Plan的大类,在这个特定的例子中,它有一个ClusterCollection类型的属性Clusters。我想存根Plan.Clusters getter 以返回一个自定义的ClusterCollection。这是我试图为此编写的代码,但它没有工作......

    Dim cc As New ClusterCollection   
       'I would add elements to CC here.

    Dim myPlan As New StubPlan
    With myPlan
        .ClustersGet= _
            Function()
                Return cc
            End Function
    End With

99% 的人肯定这不是这样做的方法,但智能感知对我也没有多大帮助。帮助???

4

1 回答 1

0

我的经验是使用 C#,但我想我可以回答你的问题。首先,Fakes 可以存根任何可以实现或扩展的东西。

存根和垫片通过使用正确的参数和返回类型创建 Action 或 Func 类型的公共属性来工作,并覆盖执行所述委托的方法。因此,您可以传入任何匹配的委托,作为 MethodGroup 或作为 lambda 或传统委托。

从文档来看,您在语法上是正确的。你是如何使用存根的?存根只是一个实例。如果您的目标是在出现的任何计划上覆盖 ClustersGet,而不是您知道将使用的实例,请考虑使用 shims 或重新设计您的方法以支持依赖注入,即将其传递给 Plan 对象。

于 2013-10-14T18:51:25.690 回答