MockTracer 0.2.2

dotnet add package MockTracer --version 0.2.2
NuGet\Install-Package MockTracer -Version 0.2.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MockTracer" Version="0.2.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add MockTracer --version 0.2.2
#r "nuget: MockTracer, 0.2.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install MockTracer as a Cake Addin
#addin nuget:?package=MockTracer&version=0.2.2

// Install MockTracer as a Cake Tool
#tool nuget:?package=MockTracer&version=0.2.2

MockTracer

Инструмент позволяет ускорить написание юнит тестов, на основании ранее вызванных запросов (методов) в ходе которых инструментом был записан порядок вызова исполняемого кода с его аргументами и результатом обработки.

Возможности

  • Пользовательский интерфейс со списком Стека выполнения
  • Интерфейс выбора точки входа в тест и классов результаты вызова/выполенения которых будут заменены Mock объектами
  • Tracer для отслеживания данных проходящих через System.Net.Http.DelegatingHandler, регистрируется автоматически
  • Tracer для отслеживания данных проходящих через MediatR.IPipelineBehavior, регистрируется автоматически
  • Tracer для отслеживания данных проходящих через Microsoft.AspNetCore.Mvc.Filters.IAsyncActionFilter, регистрируется автоматически
  • Tracer для отслеживания данных проходящих произвольный интерфейс, регистрируется services.UseMockTracerUiService((s) => s.DecorateVirtual<ISomeInterface>())
  • Tracer для отслеживания данных проходящих через System.Data.IDbConnection, регистрируется services.UseMockTracerUiService((s) => s.DecorateDbProvider<ISomeConnectionProvider>())
  • Формирование тестого класса с методом в формате "AAA" UnitTest

Demo

Регистрация инструмента

Переменная окружения "MOCKTRACER_ENABLE": "true"

В секции services

public void ConfigureServices(IServiceCollection services)
  {
    // services...

    // регистрация декораторов MockTracer и настроек генерацйии тестов, после регистрации основного кода!
    services.UseMockTracerUiService((s) =>
    {
        // регистрация провайдера прослуживающего IDBConection
        s.DecorateDbProvider<IDbProvider>();
        // регистрация произвольного интерфейса
        s.DecorateVirtual<IDataSource>();
    },
        // переопределение настроек генерации
        s => { s.GenerationSetting.DefaultFolder = @"..\MockTracer.Test\Generated"; });

  }

В секции app

  public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
  {
    // app...
    app.UseRouting();

    // Рагистрация интерфейса MockTracer после регистрации UseRouting()
    app.UseMockTracerUiApp();
    /// app...
  }

Базовый тестовый класс

Сформированный тестовый класс основан на тестовом классе MockTracer.TestBase Что бы успешно запустить сгенерированный тест предлагается два решения:

  • Nuget MockTracer.Test в проект с тестами
  • Скопировать исходный код базового класса и методы расширения из репозитория в проект с Unittest

Ограничения

  • После регистрации MockTracer снижается производительность, инструмент необходимо использовать локально в среде разработчика
  • Не для всех видов классов возможно реализовать операцию сериализации, для таких фрагментов кода (DTO классов) не возможно сгенерировать тестовый класс в полном объеме.
  • Запись Mock доступна для классов зарегистрированных как ServiceLifetime.Scoped
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.2.2 238 10/22/2023