Reo.Core.Builder.CodeGeneration 8.0.712

There is a newer version of this package available.
See the version list below for details.
dotnet add package Reo.Core.Builder.CodeGeneration --version 8.0.712
                    
NuGet\Install-Package Reo.Core.Builder.CodeGeneration -Version 8.0.712
                    
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="8.0.712" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Reo.Core.Builder.CodeGeneration" Version="8.0.712" />
                    
Directory.Packages.props
<PackageReference Include="Reo.Core.Builder.CodeGeneration" />
                    
Project file
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 8.0.712
                    
#r "nuget: Reo.Core.Builder.CodeGeneration, 8.0.712"
                    
#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@8.0.712
                    
#: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=8.0.712
                    
Install as a Cake Addin
#tool nuget:?package=Reo.Core.Builder.CodeGeneration&version=8.0.712
                    
Install as a Cake Tool

Генератор тестовых билдеров для доменных моделей

Описание пакета

Reo.Core.Builder.CodeGeneration — это библиотека для генерации билдеров доменных моделей и методов расширений для генерации снапшота состояния объекта построенного через сгенерированный билдер для использования в тестах.

По внутренним договоренностям использование пакета должно быть в Application слое решения.

Основные компоненты

  1. IBuilderFor<TModel> Маркерный интерфейс для partial классов, которые используются для создания билдеров доменных моделей.
  2. 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);
}
Принцип действия генератора:
  1. Копирует все свойства из класса
  2. Добавляет на основе типов методы для установки значений в свойства в соответствии с явно выраженными намерениями
  3. Добавляет для статического метода в доменном классе соответствующий метод для создания в билдере Create*.
    1. Где * - Имя класса

Сгенерированный метод расширения:

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();
	}
}
Принцип действия генератора:
  1. Анализирует доменный класс
  2. Формирует строковое представление для создания в рантайме кода описывающего состояние объекта через билдер

Написание теста:

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.

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.725 36 12/1/2025
8.0.724 29 12/1/2025
8.0.721 78 11/28/2025
8.0.720 80 11/28/2025
8.0.719 118 11/27/2025
8.0.718 112 11/27/2025
8.0.713 112 11/27/2025
8.0.712 108 11/27/2025
8.0.709 114 11/27/2025
8.0.708 113 11/27/2025
8.0.707 113 11/27/2025
8.0.706 110 11/27/2025
8.0.705 114 11/27/2025
8.0.704 117 11/27/2025
8.0.703 112 11/26/2025
8.0.701 116 11/26/2025
8.0.700 117 11/26/2025
8.0.699 121 11/26/2025
8.0.697 114 11/26/2025
8.0.692 166 11/24/2025
8.0.691 297 11/21/2025
8.0.690 380 11/20/2025
8.0.689 382 11/20/2025
8.0.686 384 11/18/2025
8.0.685 378 11/18/2025
8.0.682 381 11/18/2025
8.0.681 312 11/17/2025
8.0.680 312 11/17/2025
8.0.679 288 11/17/2025
8.0.678 259 11/13/2025
8.0.677 266 11/11/2025
8.0.676 267 11/11/2025
8.0.675 263 11/11/2025
8.0.674 265 11/11/2025
8.0.673 258 11/10/2025
8.0.672 240 11/10/2025
8.0.671 118 11/7/2025
8.0.670 114 11/7/2025
8.0.669 114 11/7/2025
8.0.668 124 11/7/2025
8.0.667 152 11/7/2025
8.0.666 158 11/7/2025
8.0.665 178 11/6/2025
8.0.664 179 11/6/2025
8.0.663 174 11/6/2025
8.0.662 175 11/6/2025
8.0.661 171 11/5/2025
8.0.660 179 11/5/2025
8.0.659 114 11/1/2025
8.0.658 150 10/31/2025
8.0.657 181 10/30/2025
8.0.656 174 10/30/2025
8.0.655 174 10/29/2025
8.0.654 183 10/29/2025
8.0.653 170 10/28/2025
8.0.652 170 10/28/2025
8.0.651 176 10/28/2025
8.0.650 172 10/27/2025
8.0.649 169 10/27/2025
8.0.648 120 10/24/2025
8.0.647 127 10/24/2025
8.0.646 139 10/24/2025
8.0.645 131 10/24/2025
8.0.644 170 10/23/2025
8.0.643 159 10/23/2025
8.0.642 168 10/23/2025
8.0.641 164 10/22/2025
8.0.640 165 10/22/2025
8.0.639 156 10/22/2025
8.0.638 158 10/22/2025
8.0.637 153 10/21/2025
8.0.636 156 10/21/2025
8.0.635 155 10/21/2025
8.0.634 160 10/20/2025
8.0.633 160 10/20/2025
8.0.632 166 10/20/2025
8.0.631 158 10/20/2025
8.0.630 111 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 97 10/10/2025
8.0.624 115 10/10/2025
8.0.623 123 10/10/2025
8.0.622 162 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 164 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 175 10/2/2025
8.0.599 161 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.701 110 11/26/2025
6.0.699 118 11/26/2025
6.0.692 166 11/24/2025
6.0.691 294 11/21/2025
6.0.690 375 11/20/2025
6.0.689 379 11/20/2025
6.0.686 377 11/18/2025
6.0.685 381 11/18/2025
6.0.682 377 11/18/2025
6.0.681 307 11/17/2025
6.0.680 308 11/17/2025
6.0.679 286 11/17/2025
6.0.678 255 11/13/2025
6.0.677 262 11/11/2025
6.0.676 260 11/11/2025
6.0.675 261 11/11/2025
6.0.674 266 11/11/2025
6.0.673 253 11/10/2025
6.0.672 240 11/10/2025
6.0.671 108 11/7/2025
6.0.670 111 11/7/2025
6.0.669 117 11/7/2025
6.0.668 114 11/7/2025
6.0.667 144 11/7/2025
6.0.666 155 11/7/2025
6.0.665 169 11/6/2025
6.0.664 172 11/6/2025
6.0.663 174 11/6/2025
6.0.662 171 11/6/2025
6.0.661 170 11/5/2025
6.0.660 170 11/5/2025
6.0.659 112 11/1/2025
6.0.658 142 10/31/2025
6.0.657 172 10/30/2025
6.0.656 170 10/30/2025
6.0.655 166 10/29/2025
6.0.654 168 10/29/2025
6.0.653 173 10/28/2025
6.0.652 165 10/28/2025
6.0.651 174 10/28/2025
6.0.650 168 10/27/2025
6.0.649 168 10/27/2025
6.0.648 116 10/24/2025
6.0.647 124 10/24/2025
6.0.646 132 10/24/2025
6.0.645 127 10/24/2025
6.0.644 167 10/23/2025
6.0.643 168 10/23/2025
6.0.642 165 10/23/2025
6.0.641 155 10/22/2025
6.0.640 158 10/22/2025
6.0.639 155 10/22/2025
6.0.638 160 10/22/2025
6.0.637 147 10/21/2025
6.0.636 159 10/21/2025
6.0.635 155 10/21/2025
6.0.634 161 10/20/2025
6.0.633 160 10/20/2025
6.0.632 159 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 93 10/10/2025
6.0.624 110 10/10/2025
6.0.623 122 10/10/2025
6.0.622 159 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 167 10/2/2025
6.0.599 160 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