2012-04-30 5 views

ответ

12

Поскольку проверка функциональности не включена в бета-версию Microsoft Fakes, приведенный ниже код является базовым критерием для того, был ли вызван метод зависимости. Вы можете улучшить тест 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, заключается в использовании класса StubObserver, который включен в пространство имен Microsoft.QualityTools.Testing.Fakes.Stubs. Используя фреймворк, вы создаете заглушку для своей зависимости. Затем на вашем 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")); 
+0

Это применимо как-то случае подкладок на 'AllInstances'? – SerG