Reo.Core.Builder.CodeGeneration
6.0.658
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package Reo.Core.Builder.CodeGeneration --version 6.0.658
NuGet\Install-Package Reo.Core.Builder.CodeGeneration -Version 6.0.658
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="6.0.658" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Reo.Core.Builder.CodeGeneration" Version="6.0.658" />
<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 6.0.658
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Reo.Core.Builder.CodeGeneration, 6.0.658"
#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@6.0.658
#: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=6.0.658
#tool nuget:?package=Reo.Core.Builder.CodeGeneration&version=6.0.658
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.2)
- Reo.Core.CodeGenerator (>= 6.0.658)
- stbychkov.AutoLoggerMessage (>= 1.0.14)
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 |
|---|---|---|
| 8.0.692 | 78 | 11/24/2025 |
| 8.0.691 | 288 | 11/21/2025 |
| 8.0.690 | 371 | 11/20/2025 |
| 8.0.689 | 374 | 11/20/2025 |
| 8.0.686 | 379 | 11/18/2025 |
| 8.0.685 | 373 | 11/18/2025 |
| 8.0.682 | 378 | 11/18/2025 |
| 8.0.681 | 309 | 11/17/2025 |
| 8.0.680 | 309 | 11/17/2025 |
| 8.0.679 | 284 | 11/17/2025 |
| 8.0.678 | 256 | 11/13/2025 |
| 8.0.677 | 263 | 11/11/2025 |
| 8.0.676 | 264 | 11/11/2025 |
| 8.0.675 | 260 | 11/11/2025 |
| 8.0.674 | 263 | 11/11/2025 |
| 8.0.673 | 256 | 11/10/2025 |
| 8.0.672 | 238 | 11/10/2025 |
| 8.0.671 | 116 | 11/7/2025 |
| 8.0.670 | 112 | 11/7/2025 |
| 8.0.669 | 111 | 11/7/2025 |
| 8.0.668 | 120 | 11/7/2025 |
| 8.0.667 | 150 | 11/7/2025 |
| 8.0.666 | 155 | 11/7/2025 |
| 8.0.665 | 174 | 11/6/2025 |
| 8.0.664 | 176 | 11/6/2025 |
| 8.0.663 | 171 | 11/6/2025 |
| 8.0.662 | 171 | 11/6/2025 |
| 8.0.661 | 168 | 11/5/2025 |
| 8.0.660 | 174 | 11/5/2025 |
| 8.0.659 | 112 | 11/1/2025 |
| 8.0.658 | 147 | 10/31/2025 |
| 8.0.657 | 178 | 10/30/2025 |
| 8.0.656 | 172 | 10/30/2025 |
| 8.0.655 | 172 | 10/29/2025 |
| 8.0.654 | 180 | 10/29/2025 |
| 8.0.653 | 168 | 10/28/2025 |
| 8.0.652 | 167 | 10/28/2025 |
| 8.0.651 | 174 | 10/28/2025 |
| 8.0.650 | 170 | 10/27/2025 |
| 8.0.649 | 168 | 10/27/2025 |
| 8.0.648 | 120 | 10/24/2025 |
| 8.0.647 | 127 | 10/24/2025 |
| 8.0.646 | 138 | 10/24/2025 |
| 8.0.645 | 131 | 10/24/2025 |
| 8.0.644 | 169 | 10/23/2025 |
| 8.0.643 | 159 | 10/23/2025 |
| 8.0.642 | 167 | 10/23/2025 |
| 8.0.641 | 164 | 10/22/2025 |
| 8.0.640 | 164 | 10/22/2025 |
| 8.0.639 | 155 | 10/22/2025 |
| 8.0.638 | 157 | 10/22/2025 |
| 8.0.637 | 153 | 10/21/2025 |
| 8.0.636 | 155 | 10/21/2025 |
| 8.0.635 | 155 | 10/21/2025 |
| 8.0.634 | 159 | 10/20/2025 |
| 8.0.633 | 159 | 10/20/2025 |
| 8.0.632 | 165 | 10/20/2025 |
| 8.0.631 | 158 | 10/20/2025 |
| 8.0.630 | 110 | 10/17/2025 |
| 8.0.629 | 166 | 10/13/2025 |
| 8.0.628 | 170 | 10/13/2025 |
| 8.0.627 | 161 | 10/13/2025 |
| 8.0.626 | 92 | 10/10/2025 |
| 8.0.625 | 96 | 10/10/2025 |
| 8.0.624 | 115 | 10/10/2025 |
| 8.0.623 | 122 | 10/10/2025 |
| 8.0.622 | 160 | 10/9/2025 |
| 8.0.621 | 162 | 10/9/2025 |
| 8.0.620 | 162 | 10/9/2025 |
| 8.0.619 | 157 | 10/9/2025 |
| 8.0.618 | 165 | 10/9/2025 |
| 8.0.617 | 156 | 10/9/2025 |
| 8.0.616 | 160 | 10/9/2025 |
| 8.0.615 | 163 | 10/9/2025 |
| 8.0.614 | 158 | 10/8/2025 |
| 8.0.613 | 161 | 10/8/2025 |
| 8.0.612 | 166 | 10/6/2025 |
| 8.0.611 | 122 | 10/3/2025 |
| 8.0.610 | 128 | 10/3/2025 |
| 8.0.609 | 119 | 10/3/2025 |
| 8.0.608 | 130 | 10/3/2025 |
| 8.0.607 | 129 | 10/3/2025 |
| 8.0.606 | 130 | 10/3/2025 |
| 8.0.605 | 129 | 10/3/2025 |
| 8.0.604 | 129 | 10/3/2025 |
| 8.0.603 | 132 | 10/3/2025 |
| 8.0.602 | 167 | 10/2/2025 |
| 8.0.600 | 174 | 10/2/2025 |
| 8.0.599 | 160 | 10/2/2025 |
| 8.0.598 | 167 | 10/1/2025 |
| 8.0.597 | 163 | 10/1/2025 |
| 8.0.596 | 166 | 10/1/2025 |
| 8.0.595 | 161 | 9/30/2025 |
| 8.0.594 | 159 | 9/30/2025 |
| 8.0.593 | 153 | 9/30/2025 |
| 8.0.592 | 163 | 9/30/2025 |
| 8.0.591 | 160 | 9/30/2025 |
| 8.0.589 | 156 | 9/29/2025 |
| 8.0.588 | 169 | 9/29/2025 |
| 8.0.587 | 153 | 9/29/2025 |
| 8.0.586 | 158 | 9/29/2025 |
| 8.0.585 | 164 | 9/29/2025 |
| 8.0.583 | 128 | 9/26/2025 |
| 8.0.582 | 147 | 9/26/2025 |
| 8.0.580 | 166 | 9/25/2025 |
| 8.0.579 | 170 | 9/25/2025 |
| 8.0.578 | 169 | 9/25/2025 |
| 8.0.577 | 156 | 9/25/2025 |
| 8.0.576 | 153 | 9/25/2025 |
| 8.0.575 | 170 | 9/25/2025 |
| 8.0.574 | 176 | 9/24/2025 |
| 8.0.573 | 171 | 9/23/2025 |
| 8.0.572 | 157 | 9/23/2025 |
| 8.0.571 | 175 | 9/23/2025 |
| 8.0.570 | 168 | 9/23/2025 |
| 8.0.569 | 191 | 9/22/2025 |
| 8.0.568 | 215 | 9/22/2025 |
| 8.0.567 | 228 | 9/22/2025 |
| 8.0.566 | 196 | 9/21/2025 |
| 6.0.692 | 79 | 11/24/2025 |
| 6.0.691 | 285 | 11/21/2025 |
| 6.0.690 | 366 | 11/20/2025 |
| 6.0.689 | 371 | 11/20/2025 |
| 6.0.686 | 372 | 11/18/2025 |
| 6.0.685 | 376 | 11/18/2025 |
| 6.0.682 | 374 | 11/18/2025 |
| 6.0.681 | 304 | 11/17/2025 |
| 6.0.680 | 305 | 11/17/2025 |
| 6.0.679 | 282 | 11/17/2025 |
| 6.0.678 | 252 | 11/13/2025 |
| 6.0.677 | 259 | 11/11/2025 |
| 6.0.676 | 257 | 11/11/2025 |
| 6.0.675 | 258 | 11/11/2025 |
| 6.0.674 | 264 | 11/11/2025 |
| 6.0.673 | 251 | 11/10/2025 |
| 6.0.672 | 238 | 11/10/2025 |
| 6.0.671 | 106 | 11/7/2025 |
| 6.0.670 | 109 | 11/7/2025 |
| 6.0.669 | 113 | 11/7/2025 |
| 6.0.668 | 111 | 11/7/2025 |
| 6.0.667 | 142 | 11/7/2025 |
| 6.0.666 | 152 | 11/7/2025 |
| 6.0.665 | 165 | 11/6/2025 |
| 6.0.664 | 169 | 11/6/2025 |
| 6.0.663 | 170 | 11/6/2025 |
| 6.0.662 | 167 | 11/6/2025 |
| 6.0.661 | 167 | 11/5/2025 |
| 6.0.660 | 166 | 11/5/2025 |
| 6.0.659 | 110 | 11/1/2025 |
| 6.0.658 | 139 | 10/31/2025 |
| 6.0.657 | 169 | 10/30/2025 |
| 6.0.656 | 168 | 10/30/2025 |
| 6.0.655 | 163 | 10/29/2025 |
| 6.0.654 | 165 | 10/29/2025 |
| 6.0.653 | 171 | 10/28/2025 |
| 6.0.652 | 162 | 10/28/2025 |
| 6.0.651 | 172 | 10/28/2025 |
| 6.0.650 | 166 | 10/27/2025 |
| 6.0.649 | 167 | 10/27/2025 |
| 6.0.648 | 116 | 10/24/2025 |
| 6.0.647 | 124 | 10/24/2025 |
| 6.0.646 | 131 | 10/24/2025 |
| 6.0.645 | 127 | 10/24/2025 |
| 6.0.644 | 166 | 10/23/2025 |
| 6.0.643 | 168 | 10/23/2025 |
| 6.0.642 | 164 | 10/23/2025 |
| 6.0.641 | 155 | 10/22/2025 |
| 6.0.640 | 157 | 10/22/2025 |
| 6.0.639 | 154 | 10/22/2025 |
| 6.0.638 | 159 | 10/22/2025 |
| 6.0.637 | 147 | 10/21/2025 |
| 6.0.636 | 158 | 10/21/2025 |
| 6.0.635 | 155 | 10/21/2025 |
| 6.0.634 | 160 | 10/20/2025 |
| 6.0.633 | 159 | 10/20/2025 |
| 6.0.632 | 158 | 10/20/2025 |
| 6.0.631 | 156 | 10/20/2025 |
| 6.0.630 | 116 | 10/17/2025 |
| 6.0.629 | 162 | 10/13/2025 |
| 6.0.628 | 164 | 10/13/2025 |
| 6.0.627 | 164 | 10/13/2025 |
| 6.0.626 | 87 | 10/10/2025 |
| 6.0.625 | 92 | 10/10/2025 |
| 6.0.624 | 110 | 10/10/2025 |
| 6.0.623 | 121 | 10/10/2025 |
| 6.0.622 | 158 | 10/9/2025 |
| 6.0.621 | 154 | 10/9/2025 |
| 6.0.620 | 159 | 10/9/2025 |
| 6.0.619 | 158 | 10/9/2025 |
| 6.0.618 | 159 | 10/9/2025 |
| 6.0.617 | 156 | 10/9/2025 |
| 6.0.616 | 157 | 10/9/2025 |
| 6.0.615 | 160 | 10/9/2025 |
| 6.0.614 | 162 | 10/8/2025 |
| 6.0.613 | 161 | 10/8/2025 |
| 6.0.612 | 158 | 10/6/2025 |
| 6.0.611 | 119 | 10/3/2025 |
| 6.0.610 | 118 | 10/3/2025 |
| 6.0.609 | 107 | 10/3/2025 |
| 6.0.608 | 121 | 10/3/2025 |
| 6.0.607 | 125 | 10/3/2025 |
| 6.0.606 | 130 | 10/3/2025 |
| 6.0.605 | 128 | 10/3/2025 |
| 6.0.604 | 125 | 10/3/2025 |
| 6.0.603 | 138 | 10/3/2025 |
| 6.0.602 | 165 | 10/2/2025 |
| 6.0.600 | 166 | 10/2/2025 |
| 6.0.599 | 159 | 10/2/2025 |
| 6.0.598 | 168 | 10/1/2025 |
| 6.0.597 | 164 | 10/1/2025 |
| 6.0.596 | 165 | 10/1/2025 |
| 6.0.595 | 157 | 9/30/2025 |
| 6.0.594 | 164 | 9/30/2025 |
| 6.0.593 | 164 | 9/30/2025 |
| 6.0.592 | 160 | 9/30/2025 |
| 6.0.591 | 162 | 9/30/2025 |
| 6.0.589 | 163 | 9/29/2025 |
| 6.0.588 | 164 | 9/29/2025 |
| 6.0.587 | 164 | 9/29/2025 |
| 6.0.586 | 158 | 9/29/2025 |
| 6.0.585 | 160 | 9/29/2025 |
| 6.0.583 | 124 | 9/26/2025 |
| 6.0.582 | 147 | 9/26/2025 |
| 6.0.580 | 168 | 9/25/2025 |
| 6.0.579 | 171 | 9/25/2025 |
| 6.0.578 | 165 | 9/25/2025 |
| 6.0.577 | 163 | 9/25/2025 |
| 6.0.576 | 163 | 9/25/2025 |
| 6.0.575 | 164 | 9/25/2025 |
| 6.0.574 | 171 | 9/24/2025 |
| 6.0.573 | 158 | 9/23/2025 |
| 6.0.572 | 169 | 9/23/2025 |
| 6.0.571 | 168 | 9/23/2025 |
| 6.0.570 | 170 | 9/23/2025 |
| 6.0.569 | 189 | 9/22/2025 |
| 6.0.568 | 211 | 9/22/2025 |
| 6.0.567 | 227 | 9/22/2025 |
| 6.0.566 | 196 | 9/21/2025 |