Reo.Core.Builder.CodeGeneration
10.0.86
dotnet add package Reo.Core.Builder.CodeGeneration --version 10.0.86
NuGet\Install-Package Reo.Core.Builder.CodeGeneration -Version 10.0.86
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="Reo.Core.Builder.CodeGeneration" Version="10.0.86" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Reo.Core.Builder.CodeGeneration" Version="10.0.86" />
<PackageReference Include="Reo.Core.Builder.CodeGeneration" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Reo.Core.Builder.CodeGeneration --version 10.0.86
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Reo.Core.Builder.CodeGeneration, 10.0.86"
#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.
#:package Reo.Core.Builder.CodeGeneration@10.0.86
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Reo.Core.Builder.CodeGeneration&version=10.0.86
#tool nuget:?package=Reo.Core.Builder.CodeGeneration&version=10.0.86
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Генератор тестовых билдеров для доменных моделей
Описание пакета
Reo.Core.Builder.CodeGeneration — это библиотека для генерации билдеров доменных моделей и методов расширений
для генерации снапшота состояния объекта построенного через сгенерированный билдер для использования в тестах.
По внутренним договоренностям использование пакета должно быть в Application слое решения.
Основные компоненты
IBuilderFor<TModel>Маркерный интерфейс дляpartialклассов, которые используются для создания билдеров доменных моделей.TModel- тип доменной модели.
Требования
Установка
Используйте следующие команды для установки пакета:
# NuGet Package Manager
Install-Package Reo.Core.Builder.CodeGeneration
# .NET CLI
dotnet add package Reo.Core.Builder.CodeGeneration
Настройка
Подготовка
Создайте в проекте маркерный интерфейс.:
/// <summary>
/// Маркерный интерфейс для генерации построителя модели
/// </summary>
[PublicAPI]
public interface IBuilderFor<[MeansTestSubject] T>;
Создайте partial класс который реализует маркерный интерфейс
public partial class MyModelTestBuilder : IBuilderFor<MyModel>;
Доменный класс:
public class MyModel
{
private MyModel(string? name)
{
Name = name;
}
public string? Name { get; set; }
public static MyModel Create(string? name)
{
var result = new MyModel(name);
return result;
}
}
Сгенерированный класс с методами:
public partial class MyModelTestBuilder
{
private string? Name { get; set; }
public MyModelTestBuilder WithName(string name)
{
Name = name;
return this;
}
public MyModelTestBuilder WithNameAsNull()
{
Name = null;
return this;
}
public MyModel CreateMyModel() => MyModel.Create(Name);
}
Принцип действия генератора:
- Копирует все свойства из класса
- Добавляет на основе типов методы для установки значений в свойства в соответствии с явно выраженными намерениями
- Добавляет для статического метода в доменном классе соответствующий метод для создания в билдере
Create*.- Где * - Имя класса
Сгенерированный метод расширения:
public static class MyModelExtensions
{
public static string ToTestingBuilderString(this MyModel model)
{
var sb = new StringBuilder("Mocker.Get<MyModelBuilder>()");
sb.AppendLine();
sb.Append(".WithName");
sb.AppendLine(model.Name.IsNotNullOrWhiteSpace() ? $"(\"{model.Name}\")" : "AsNull()");
sb.AppendLine(".CreateMyModel()");
return sb.ToString();
}
}
Принцип действия генератора:
- Анализирует доменный класс
- Формирует строковое представление для создания в рантайме кода описывающего состояние объекта через билдер
Написание теста:
public class MyModelTests
{
private readonly AutoMocker _mocker = new();
private readonly MyModelTestBuilder _builder;
public MyModelTests() => _builder = _mocker.Get<MyModelTestBuilder>();
[Fact(DisplayName = "Наименование может быть не задано")]
public void Test1()
{
// Arrange
_builder.WithNameAsNull();
// Act
var result = _builder.CreateMyModel();
// Assert
result.Name.Should()
.BeNull();
}
}
Лицензия
Данный пакет распространяется под лицензией MIT.
There are no supported framework assets in this package.
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- JetBrains.Annotations (>= 2025.2.4)
- Reo.Core.CodeGenerator (>= 10.0.86)
- stbychkov.AutoLoggerMessage (>= 1.0.15)
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 |
|---|---|---|
| 10.0.86 | 15 | 4/3/2026 |
| 10.0.85 | 39 | 3/31/2026 |
| 10.0.84 | 29 | 3/31/2026 |
| 10.0.83 | 78 | 3/30/2026 |
| 10.0.82 | 77 | 3/30/2026 |
| 10.0.81 | 76 | 3/30/2026 |
| 10.0.80 | 86 | 3/27/2026 |
| 10.0.79 | 81 | 3/26/2026 |
| 10.0.78 | 78 | 3/26/2026 |
| 10.0.77 | 78 | 3/25/2026 |
| 10.0.76 | 82 | 3/24/2026 |
| 10.0.75 | 84 | 3/23/2026 |
| 10.0.74 | 86 | 3/19/2026 |
| 10.0.73 | 82 | 3/19/2026 |
| 10.0.72 | 80 | 3/18/2026 |
| 10.0.71 | 80 | 3/18/2026 |
| 10.0.70 | 82 | 3/18/2026 |
| 10.0.69 | 92 | 3/17/2026 |
| 10.0.68 | 111 | 3/12/2026 |
| 10.0.67 | 109 | 3/10/2026 |
Loading failed