9

我在 Visual Studio 11 中使用 Microsoft Fakes 测试版。如何验证我的测试系统是否调用了依赖项的方法?

4

3 回答 3

13

由于验证功能不包含在 Microsoft Fakes Beta 中,因此下面的代码是对是否调用依赖项上的方法的基本测试。您可以增强true测试以测试正确调用的参数值或其他条件。

测试:

[TestMethod]
public void TestMethod1()
{
    var secondDoItCalled = false;
    var secondStub = new Fakes.ShimSecond();
    secondStub.DoIt = () => { secondDoItCalled = true; };
    var first = new First(secondStub);
    first.DoIt();
    Assert.IsTrue(secondDoItCalled);
}

课程:

public class First
{
    readonly Second _second;
    public First(Second second) { _second = second; }
    public void DoIt() { 
        //_second.DoIt();
    }
}

public class Second {public void DoIt(){}}

取消注释上面的行以查看测试通过。

于 2012-04-30T20:52:34.473 回答
9

使用 Microsoft Fakes 框架进行行为验证的另一个选择是使用 Microsoft.QualityTools.Testing.Fakes.Stubs 命名空间中包含的 StubObserver 类。使用该框架,您可以为依赖项生成一个存根。然后在您的 Stub 上,您可以将 InstanceObserver 属性设置为新的 StubObserver。使用 StubObserver 类,您可以“查询”对您的依赖项进行的方法调用。您的测试方法如下所示

//Arrange
var dependency = new StubIDependency { InstanceObserver = new StubObserver() };
var sut = new SystemClass(dependency);

// Act
sut.DoSomething();

// Assert
var observer = (StubObserver)dependency.InstanceObserver;      
Assert.IsTrue(
    observer.GetCalls().Any(call => call.StubbedMethod.Name == "DoSomething"));
于 2012-12-10T04:12:02.437 回答
4

看看这篇文章:http ://www.peterprovost.org/blog/2012/11/29/visual-studio-2012-fakes-part-3/

干杯

于 2013-03-12T05:15:44.040 回答