2012-04-30 18 views

回答

12

由于验证功能未包含在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(){}} 

取消对上述线看到试验合格。

8

您使用Microsoft Fakes框架进行行为验证的另一个选择是使用包含在Microsoft.QualityTools.Testing.Fakes.Stubs命名空间中的StubObserver类。使用该框架,您可以为您的依赖项生成存根。然后在您的存根上,您可以将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")); 
+0

是否适用某种方式通过'AllInstances'匀场的情况下? – SerG

相关问题