Я использую бета-версию Microsoft Fakes в Visual Studio 11. Как я могу проверить, вызван ли метод зависимостей моей тестируемой системой?Как я могу проверить, что был вызван заглушка/шайба Microsoft Fakes (бета) (например, AssertWasCalled в Rhino Mocks)?
ответ
Поскольку проверка функциональности не включена в бета-версию 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(){}}
раскомментируйте выше линии, чтобы увидеть тестовый проход.
Другой вариант, который вы используете для выполнения поведенческой проверки в рамках 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"));
Посмотрите на этот пост: http://www.peterprovost.org/blog/2012/11/29/visual-studio-2012-fakes-part-3/
Приветствия
Это применимо как-то случае подкладок на 'AllInstances'? – SerG