2016-09-01 2 views
1

Есть ли способ утверждать, что мой издевавшийся объект «получил»?Как проверить, что макет был «получен»?

public class Car 
{ 
    private readonly IValidationDict _validationDict; 
    public Car(IValidationDict validationDict) 
    { 
     _validationDict = validationDict; 
    } 

    public void Go() 
    { 
     var myValidation = _validationDict; //I would like to assert that _validationDict was indeed assigned to another variable or "gotten" 
    } 
} 

В моем модульном тесте я бы что-то вроде:

var mock = new Mock<IValidationDict>(); 
var sut = new Car(IValidationDict.Object); 

Есть ли способ, чтобы утверждать, что мой издевались объект «получил»?

+0

Что происходит с 'myValidation' в остальной части метода? Предположительно, он вызывает некоторого члена макета, поэтому вы должны быть в состоянии заявить об этом. – Lee

+0

@ Lee would not это не классическое модульное тестирование, а в зависимости от чего-то еще для работы? –

+0

Я не уверен, что вы подразумеваете под «в зависимости от чего-то еще, чтобы работать», но поскольку «Go» - это метод пустоты, вы выполняете его только для своих побочных эффектов. Поскольку вы даете макет в своем тесте, вы утверждаете эти эффекты через ожидания на макет, который вы предоставляете. Детали того, как это происходит в методе 'Go', должны быть неактуальны для теста. – Lee

ответ

2

Нет, нет способа проверить, что ваш макет был использован как часть задания. Назначение myValidation происходит за пределами рамки Moq, поэтому Moq не может перехватить его.

Как состояние @Lee, существует предположение, что myValidation используется где-то в другом месте, и можно использовать эту переменную (которая будет издеваться над экземпляром).

Одна альтернатива, если вы должны знать, если ваш макет был доступ будет создать класс фабрики, который имеет метод получения вашего словаря проверки (что-то вроде GetValidation), а затем передать высмеивал фабрику к вашему Car и убедитесь, что на заводе был вызван метод GetValidation.

 Смежные вопросы

  • Нет связанных вопросов^_^