dir.by  
  Search  
Programming, development, testing
Юнит тестирование (MSTest, NUnit, xUnit, Moq) и Автоматическое тестирование (компьютер сам водит мышкой)
Moq (mock) тестирование
Пишем C# приложение с Mock (moq) тестированием
  Looked at 18124 times    
 Пишем C# приложение с Mock (moq) тестированием 
last updated: 29 October 2018
Mock тестирование это значит мы создаем Mock объект.
Mock объект представляет собой фиктивную реализацию интерфейса (муляж).
Фиктивная реализация интерфейса означает что для интерфейса мы определяем не все методы.
Для метода мы указываем что он возращают и при каких параметрах.

Обычно в тестировании мы создаем Mock объект, а потом его подсовываем в другой класс для тестирования.
План (3 шага)
Шаг 1. Создаем новое консольное приложение
Шаг 2. Добавляем библиотеку Moq используя NuGet
Нажимаем в меню: ToolsNuGet Package ManagerManage NuGet Packages for Solution...
Пишем moq и нажимаем Install
На заметку!
Еси у Вас появилась ошибка "moq Attempting to resolve dependency 'Castle.Core (≥ 4.3.0)'. 'Castle.Core' already has a dependency defined for 'NETStandard.Library'."
Чтобы исправить ошибку нужно: удалить и заново установить NuGet...
Шаг 3. Пишем приложение с Moq тестированием
  C#     В файле Program.cs напишем код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Moq;

namespace ConsoleApplication1
{
     public class Book
     {
          public string Name;
          public int Price;
     }

     public interface IRepository
     {
          int GetCount();
          Book GetBook(int index);
          void Add(Book book);
     }

     class Program
     {
          static void Main(string[] args)
          {

               Book[] books = {
                                        new Book(){Name="a", Price=100},
                                        new Book(){Name="d", Price=320},
                                        new Book(){Name="e", Price=56},
                              };

               // Шаг1. Создаем mock объект (указывающий на IRepository)
               Mock<IRepository> mock = new Mock<IRepository>();

               // Шаг2. Добавляем в mock объект метод GetBook
               // взависимости от переметра в GetBook настраиваем что метод GetBook будет возращать

               // Говорим mock объекту, что при вызыве rep.GetBook(1) будет возращен books[0]
               mock.Setup(r => r.GetBook(1)).Returns(books[0]);

               // Говорим mock объекту, что при вызыве rep.GetBook(2, 3 или больше) будет возращен books[2]
               mock.Setup(r => r.GetBook(It.Is<int>(v => v > 1))).Returns(books[2]);

               // Шаг3. Тестируем mock объект
               IRepository rep = mock.Object;
               Book b0 = rep.GetBook(0); // null
               Book b1 = rep.GetBook(1); // books[0]
               Book b2 = rep.GetBook(2); // books[2]
               Book b3 = rep.GetBook(3); // books[2]
               Book b4 = rep.GetBook(4); // books[2]
               Book b5 = rep.GetBook(5); // books[2]

          }
     }
}
Объяснение примера
То есть mock объект указывает на интерфейс IRepository
В mock объект мы добавили метод GetBook
Mock mock = new Mock();
Наш mock объект будет содержать IRepository
mock.Setup(r => r.GetBook(1)).Returns(books[0]);
Setup это значит, что мы в mock объект добавляем метод.
Тут на примере это метод GetBook

Returns означает, что будет возращать метод GetBook.
Тут на пример возращает books[0]. books эту переменную мы объявили в начале программы.
 
← Previous topic
Что такое Mock (moq) тестирование?
 
Next topic →
Сайты для изучения Moq тестирования
 
Your feedback ... Comments ...
   
Your Name
Your comment (www links can only be added by a logged-in user)

  Объявления  
  Объявления  
 
What is Unit Testing?
MSTest (UnitTest) тестирование
Что такое MSTest (UnitTest) ? (фреймворк юнит-тестирования от компании Microsoft)
Сайты для изучения MSTest (UnitTest) тестирования
NUnit тестирование
Что такое NUnit ? (фреймворк юнит-тестирования)
Пишем консольное C# приложение с NUnit тестированием
xUnit тестирование
Что такое xUnit ? (фреймворк юнит-тестирования)
Сайты для изучения xUnit тестирования
Moq (mock) тестирование
Что такое Mock (moq) тестирование?
Пишем C# приложение с Mock (moq) тестированием
Сайты для изучения Moq тестирования
Что такое автоматическое тестирование программы (automated testing)?
Автоматическое тестирование
Write an automated test on C# using Selenium for Web site
Скачиваем и устанавливаем Microsoft приложение WinAppDriver
Запускаем Microsoft приложение WinAppDriver
Пишем автоматический тест на C# для стандартного калькулятора из Windows
Пишем автоматический тест для WPF C# приложения (используем Nuget.Appium и свойство AutomationProperties.AutomationId)

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика