Reo.Core.Builder.CodeGeneration
6.0.650
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.650
NuGet\Install-Package Reo.Core.Builder.CodeGeneration -Version 6.0.650
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.650" />
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.650" />
<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.650
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Reo.Core.Builder.CodeGeneration, 6.0.650"
#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.650
#: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.650
#tool nuget:?package=Reo.Core.Builder.CodeGeneration&version=6.0.650
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.650)
- 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.690 | 0 | 11/20/2025 |
| 8.0.689 | 18 | 11/20/2025 |
| 8.0.686 | 39 | 11/18/2025 |
| 8.0.685 | 35 | 11/18/2025 |
| 8.0.682 | 39 | 11/18/2025 |
| 8.0.681 | 84 | 11/17/2025 |
| 8.0.680 | 84 | 11/17/2025 |
| 8.0.679 | 85 | 11/17/2025 |
| 8.0.678 | 254 | 11/13/2025 |
| 8.0.677 | 261 | 11/11/2025 |
| 8.0.676 | 262 | 11/11/2025 |
| 8.0.675 | 258 | 11/11/2025 |
| 8.0.674 | 261 | 11/11/2025 |
| 8.0.673 | 255 | 11/10/2025 |
| 8.0.672 | 237 | 11/10/2025 |
| 8.0.671 | 114 | 11/7/2025 |
| 8.0.670 | 111 | 11/7/2025 |
| 8.0.669 | 110 | 11/7/2025 |
| 8.0.668 | 119 | 11/7/2025 |
| 8.0.667 | 149 | 11/7/2025 |
| 8.0.666 | 154 | 11/7/2025 |
| 8.0.665 | 172 | 11/6/2025 |
| 8.0.664 | 174 | 11/6/2025 |
| 8.0.663 | 169 | 11/6/2025 |
| 8.0.662 | 169 | 11/6/2025 |
| 8.0.661 | 167 | 11/5/2025 |
| 8.0.660 | 173 | 11/5/2025 |
| 8.0.659 | 109 | 11/1/2025 |
| 8.0.658 | 144 | 10/31/2025 |
| 8.0.657 | 175 | 10/30/2025 |
| 8.0.656 | 169 | 10/30/2025 |
| 8.0.655 | 169 | 10/29/2025 |
| 8.0.654 | 177 | 10/29/2025 |
| 8.0.653 | 165 | 10/28/2025 |
| 8.0.652 | 164 | 10/28/2025 |
| 8.0.651 | 171 | 10/28/2025 |
| 8.0.650 | 169 | 10/27/2025 |
| 8.0.649 | 167 | 10/27/2025 |
| 8.0.648 | 119 | 10/24/2025 |
| 8.0.647 | 126 | 10/24/2025 |
| 8.0.646 | 137 | 10/24/2025 |
| 8.0.645 | 130 | 10/24/2025 |
| 8.0.644 | 168 | 10/23/2025 |
| 8.0.643 | 158 | 10/23/2025 |
| 8.0.642 | 166 | 10/23/2025 |
| 8.0.641 | 163 | 10/22/2025 |
| 8.0.640 | 163 | 10/22/2025 |
| 8.0.639 | 154 | 10/22/2025 |
| 8.0.638 | 156 | 10/22/2025 |
| 8.0.637 | 152 | 10/21/2025 |
| 8.0.636 | 154 | 10/21/2025 |
| 8.0.635 | 154 | 10/21/2025 |
| 8.0.634 | 158 | 10/20/2025 |
| 8.0.633 | 158 | 10/20/2025 |
| 8.0.632 | 164 | 10/20/2025 |
| 8.0.631 | 157 | 10/20/2025 |
| 8.0.630 | 109 | 10/17/2025 |
| 8.0.629 | 165 | 10/13/2025 |
| 8.0.628 | 169 | 10/13/2025 |
| 8.0.627 | 160 | 10/13/2025 |
| 8.0.626 | 91 | 10/10/2025 |
| 8.0.625 | 95 | 10/10/2025 |
| 8.0.624 | 114 | 10/10/2025 |
| 8.0.623 | 121 | 10/10/2025 |
| 8.0.622 | 159 | 10/9/2025 |
| 8.0.621 | 161 | 10/9/2025 |
| 8.0.620 | 161 | 10/9/2025 |
| 8.0.619 | 156 | 10/9/2025 |
| 8.0.618 | 164 | 10/9/2025 |
| 8.0.617 | 155 | 10/9/2025 |
| 8.0.616 | 159 | 10/9/2025 |
| 8.0.615 | 162 | 10/9/2025 |
| 8.0.614 | 157 | 10/8/2025 |
| 8.0.613 | 160 | 10/8/2025 |
| 8.0.612 | 165 | 10/6/2025 |
| 8.0.611 | 121 | 10/3/2025 |
| 8.0.610 | 127 | 10/3/2025 |
| 8.0.609 | 118 | 10/3/2025 |
| 8.0.608 | 129 | 10/3/2025 |
| 8.0.607 | 128 | 10/3/2025 |
| 8.0.606 | 129 | 10/3/2025 |
| 8.0.605 | 128 | 10/3/2025 |
| 8.0.604 | 128 | 10/3/2025 |
| 8.0.603 | 131 | 10/3/2025 |
| 8.0.602 | 166 | 10/2/2025 |
| 8.0.600 | 173 | 10/2/2025 |
| 8.0.599 | 159 | 10/2/2025 |
| 8.0.598 | 166 | 10/1/2025 |
| 8.0.597 | 162 | 10/1/2025 |
| 8.0.596 | 165 | 10/1/2025 |
| 8.0.595 | 160 | 9/30/2025 |
| 8.0.594 | 158 | 9/30/2025 |
| 8.0.593 | 152 | 9/30/2025 |
| 8.0.592 | 162 | 9/30/2025 |
| 8.0.591 | 159 | 9/30/2025 |
| 8.0.589 | 155 | 9/29/2025 |
| 8.0.588 | 168 | 9/29/2025 |
| 8.0.587 | 152 | 9/29/2025 |
| 8.0.586 | 157 | 9/29/2025 |
| 8.0.585 | 163 | 9/29/2025 |
| 8.0.583 | 127 | 9/26/2025 |
| 8.0.582 | 146 | 9/26/2025 |
| 8.0.580 | 165 | 9/25/2025 |
| 8.0.579 | 169 | 9/25/2025 |
| 8.0.578 | 168 | 9/25/2025 |
| 8.0.577 | 155 | 9/25/2025 |
| 8.0.576 | 152 | 9/25/2025 |
| 8.0.575 | 169 | 9/25/2025 |
| 8.0.574 | 175 | 9/24/2025 |
| 8.0.573 | 170 | 9/23/2025 |
| 8.0.572 | 156 | 9/23/2025 |
| 8.0.571 | 174 | 9/23/2025 |
| 8.0.570 | 167 | 9/23/2025 |
| 8.0.569 | 190 | 9/22/2025 |
| 8.0.568 | 214 | 9/22/2025 |
| 8.0.567 | 227 | 9/22/2025 |
| 8.0.566 | 195 | 9/21/2025 |
| 6.0.690 | 0 | 11/20/2025 |
| 6.0.689 | 16 | 11/20/2025 |
| 6.0.686 | 34 | 11/18/2025 |
| 6.0.685 | 36 | 11/18/2025 |
| 6.0.682 | 35 | 11/18/2025 |
| 6.0.681 | 79 | 11/17/2025 |
| 6.0.680 | 80 | 11/17/2025 |
| 6.0.679 | 83 | 11/17/2025 |
| 6.0.678 | 250 | 11/13/2025 |
| 6.0.677 | 257 | 11/11/2025 |
| 6.0.676 | 255 | 11/11/2025 |
| 6.0.675 | 256 | 11/11/2025 |
| 6.0.674 | 262 | 11/11/2025 |
| 6.0.673 | 250 | 11/10/2025 |
| 6.0.672 | 237 | 11/10/2025 |
| 6.0.671 | 105 | 11/7/2025 |
| 6.0.670 | 108 | 11/7/2025 |
| 6.0.669 | 112 | 11/7/2025 |
| 6.0.668 | 110 | 11/7/2025 |
| 6.0.667 | 141 | 11/7/2025 |
| 6.0.666 | 151 | 11/7/2025 |
| 6.0.665 | 164 | 11/6/2025 |
| 6.0.664 | 168 | 11/6/2025 |
| 6.0.663 | 169 | 11/6/2025 |
| 6.0.662 | 166 | 11/6/2025 |
| 6.0.661 | 166 | 11/5/2025 |
| 6.0.660 | 165 | 11/5/2025 |
| 6.0.659 | 107 | 11/1/2025 |
| 6.0.658 | 136 | 10/31/2025 |
| 6.0.657 | 166 | 10/30/2025 |
| 6.0.656 | 165 | 10/30/2025 |
| 6.0.655 | 160 | 10/29/2025 |
| 6.0.654 | 162 | 10/29/2025 |
| 6.0.653 | 168 | 10/28/2025 |
| 6.0.652 | 159 | 10/28/2025 |
| 6.0.651 | 169 | 10/28/2025 |
| 6.0.650 | 165 | 10/27/2025 |
| 6.0.649 | 166 | 10/27/2025 |
| 6.0.648 | 115 | 10/24/2025 |
| 6.0.647 | 123 | 10/24/2025 |
| 6.0.646 | 130 | 10/24/2025 |
| 6.0.645 | 126 | 10/24/2025 |
| 6.0.644 | 165 | 10/23/2025 |
| 6.0.643 | 167 | 10/23/2025 |
| 6.0.642 | 163 | 10/23/2025 |
| 6.0.641 | 154 | 10/22/2025 |
| 6.0.640 | 156 | 10/22/2025 |
| 6.0.639 | 153 | 10/22/2025 |
| 6.0.638 | 158 | 10/22/2025 |
| 6.0.637 | 146 | 10/21/2025 |
| 6.0.636 | 157 | 10/21/2025 |
| 6.0.635 | 154 | 10/21/2025 |
| 6.0.634 | 159 | 10/20/2025 |
| 6.0.633 | 158 | 10/20/2025 |
| 6.0.632 | 157 | 10/20/2025 |
| 6.0.631 | 155 | 10/20/2025 |
| 6.0.630 | 115 | 10/17/2025 |
| 6.0.629 | 161 | 10/13/2025 |
| 6.0.628 | 163 | 10/13/2025 |
| 6.0.627 | 163 | 10/13/2025 |
| 6.0.626 | 86 | 10/10/2025 |
| 6.0.625 | 91 | 10/10/2025 |
| 6.0.624 | 109 | 10/10/2025 |
| 6.0.623 | 120 | 10/10/2025 |
| 6.0.622 | 157 | 10/9/2025 |
| 6.0.621 | 153 | 10/9/2025 |
| 6.0.620 | 158 | 10/9/2025 |
| 6.0.619 | 157 | 10/9/2025 |
| 6.0.618 | 158 | 10/9/2025 |
| 6.0.617 | 155 | 10/9/2025 |
| 6.0.616 | 156 | 10/9/2025 |
| 6.0.615 | 159 | 10/9/2025 |
| 6.0.614 | 161 | 10/8/2025 |
| 6.0.613 | 160 | 10/8/2025 |
| 6.0.612 | 157 | 10/6/2025 |
| 6.0.611 | 118 | 10/3/2025 |
| 6.0.610 | 117 | 10/3/2025 |
| 6.0.609 | 106 | 10/3/2025 |
| 6.0.608 | 120 | 10/3/2025 |
| 6.0.607 | 124 | 10/3/2025 |
| 6.0.606 | 129 | 10/3/2025 |
| 6.0.605 | 127 | 10/3/2025 |
| 6.0.604 | 124 | 10/3/2025 |
| 6.0.603 | 137 | 10/3/2025 |
| 6.0.602 | 164 | 10/2/2025 |
| 6.0.600 | 165 | 10/2/2025 |
| 6.0.599 | 158 | 10/2/2025 |
| 6.0.598 | 167 | 10/1/2025 |
| 6.0.597 | 163 | 10/1/2025 |
| 6.0.596 | 164 | 10/1/2025 |
| 6.0.595 | 156 | 9/30/2025 |
| 6.0.594 | 163 | 9/30/2025 |
| 6.0.593 | 163 | 9/30/2025 |
| 6.0.592 | 159 | 9/30/2025 |
| 6.0.591 | 161 | 9/30/2025 |
| 6.0.589 | 162 | 9/29/2025 |
| 6.0.588 | 163 | 9/29/2025 |
| 6.0.587 | 163 | 9/29/2025 |
| 6.0.586 | 157 | 9/29/2025 |
| 6.0.585 | 159 | 9/29/2025 |
| 6.0.583 | 123 | 9/26/2025 |
| 6.0.582 | 146 | 9/26/2025 |
| 6.0.580 | 167 | 9/25/2025 |
| 6.0.579 | 170 | 9/25/2025 |
| 6.0.578 | 164 | 9/25/2025 |
| 6.0.577 | 162 | 9/25/2025 |
| 6.0.576 | 162 | 9/25/2025 |
| 6.0.575 | 163 | 9/25/2025 |
| 6.0.574 | 170 | 9/24/2025 |
| 6.0.573 | 157 | 9/23/2025 |
| 6.0.572 | 168 | 9/23/2025 |
| 6.0.571 | 167 | 9/23/2025 |
| 6.0.570 | 169 | 9/23/2025 |
| 6.0.569 | 188 | 9/22/2025 |
| 6.0.568 | 210 | 9/22/2025 |
| 6.0.567 | 226 | 9/22/2025 |
| 6.0.566 | 195 | 9/21/2025 |