Reo.Core.Builder.CodeGeneration 6.0.632

There is a newer version of this package available.
See the version list below for details.
dotnet add package Reo.Core.Builder.CodeGeneration --version 6.0.632
                    
NuGet\Install-Package Reo.Core.Builder.CodeGeneration -Version 6.0.632
                    
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.632" />
                    
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.632" />
                    
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 6.0.632
                    
#r "nuget: Reo.Core.Builder.CodeGeneration, 6.0.632"
                    
#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.632
                    
#: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.632
                    
Install as a Cake Addin
#tool nuget:?package=Reo.Core.Builder.CodeGeneration&version=6.0.632
                    
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.692 0 11/24/2025
8.0.691 242 11/21/2025
8.0.690 325 11/20/2025
8.0.689 328 11/20/2025
8.0.686 333 11/18/2025
8.0.685 327 11/18/2025
8.0.682 332 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 115 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 0 11/24/2025
6.0.691 239 11/21/2025
6.0.690 320 11/20/2025
6.0.689 325 11/20/2025
6.0.686 326 11/18/2025
6.0.685 330 11/18/2025
6.0.682 328 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