dir.by  
  Поиск  
Компьютер, программы
Юнит тестирование (MSTest, NUnit, xUnit, Moq) и Автоматическое тестирование (компьютер сам водит мышкой)
Moq (mock) testing
 Пишем C# приложение с Mock (moq) тестированием 
посмотрели 22560 раз
обновлено: 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
What is Mock (moq) testing?
 
Next topic →
Websites to learn Moq testing
 
Your feedback ... Comments ...
   
Your Name
Your comment (www links can only be added by a logged-in user)

  Объявления  
  Объявления  
 
What is Unit Testing?
MSTest (UnitTest) testing
What is MSTest (UnitTest)? (Unit Testing Framework from Microsoft)
Sites to learn MSTest (UnitTest) testing
NUnit Testing
What is NUnit ? (unit testing framework)
Writing a Console C# Application with NUnit Testing
xUnit testing
What is xUnit? (unit testing framework)
Sites to learn xUnit testing
Moq (mock) testing
What is Mock (moq) testing?
Writing a C# Application with Mock (moq) Testing
Websites to learn Moq testing
What is automated testing?
Automated Testing
Write an automated test on C# using Selenium for Web site
Download and install the Microsoft application WinAppDriver
Launch the Microsoft WinAppDriver application
Writing an automatic C# test for a standard calculator from Windows
Writing an automated test for a WPF C# application (using Nuget.Appium and the AutomationProperties.AutomationId property)

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