moq учебник
Начало работы с moq
Поиск…
замечания
Мок - издевательская библиотека для .Net. Это позволяет моделировать и проверять взаимодействия с зависимостями, чтобы облегчить модульное тестирование.
Заметки о выпуске для другой версии Moq можно найти здесь .
Установка или настройка
- Выберите проект, который вы хотите добавить в Moq.
- Откройте Nuget для этого проекта.
- Выберите «Обзор», а затем введите «moq» в поле поиска.
- Выберите «Moq» и нажмите «Установить».
После этих шагов будет установлен пакет Moq и добавится ссылка на него в выбранных ссылках проекта. После завершения этих шагов Moq может быть использован в проектном модульном проекте, просто объявив его в файлах тестовых классов:
Using Moq;
Moqs - тестовые двойники
Mocks означают как двойные тесты, которые позволяют проверять взаимодействие с мошенниками, они не предназначены для замены тестируемой системы. Примеры часто демонстрируют особенности Moq следующим образом:
// Create the mock
var mock = new Mock<IMockTarget>();
// Configure the mock to do something
mock.SetupGet(x => x.PropertyToMock).Returns("FixedValue");
// Demonstrate that the configuration works
Assert.AreEqual("FixedValue", mock.Object.PropertyToMock);
// Verify that the mock was invoked
mock.VerifyGet(x => x.PropertyToMock);
Хотя этот пример показывает шаги, связанные с использованием макета, важно помнить, что он фактически ничего не тестирует, кроме того, что макет был настроен и использовался правильно. Фактический тест, который использует макет, будет давать макет системе, которая должна быть проверена. Чтобы протестировать следующий метод:
public class ClassToTest
{
public string GetPrefixedValue(IMockTarget provider)
{
return "Prefixed:" + provider.PropertyToMock;
}
}
Можно создать макет зависимого интерфейса:
public interface IMockTarget
{
string PropertyToMock { get; }
}
Чтобы создать тест, который фактически проверяет поведение метода GetPrefixedValue
:
// Create and configure the mock to return a known value for the property
var mock = new Mock<IMockTarget>();
mock.SetupGet(x => x.PropertyToMock).Returns("FixedValue");
// Create an instance of the class to test
var sut = new ClassToTest();
// Invoke the method to test, supplying the mocked instance
var actualValue = sut.GetPrefixedValue(mock.Object);
// Validate that the calculated value is correct
Assert.AreEqual("Prefixed:FixedValue", actualValue);
// Depending on what your method does, the mock can then be interrogated to
// validate that the property getter was called. In this instance, it's
// unnecessary since we're validating it via the calculated value.
mock.VerifyGet(x => x.PropertyToMock);