Reo.Core.Builder.CodeGeneration 8.0.658

dotnet add package Reo.Core.Builder.CodeGeneration --version 8.0.658
                    
NuGet\Install-Package Reo.Core.Builder.CodeGeneration -Version 8.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="8.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="8.0.658" />
                    
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.658
                    
#r "nuget: Reo.Core.Builder.CodeGeneration, 8.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@8.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=8.0.658
                    
Install as a Cake Addin
#tool nuget:?package=Reo.Core.Builder.CodeGeneration&version=8.0.658
                    
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.658 70 10/31/2025
8.0.657 108 10/30/2025
8.0.656 103 10/30/2025
8.0.655 105 10/29/2025
8.0.654 113 10/29/2025
8.0.653 103 10/28/2025
8.0.652 102 10/28/2025
8.0.651 109 10/28/2025
8.0.650 148 10/27/2025
8.0.649 149 10/27/2025
8.0.648 113 10/24/2025
8.0.647 119 10/24/2025
8.0.646 131 10/24/2025
8.0.645 124 10/24/2025
8.0.644 161 10/23/2025
8.0.643 151 10/23/2025
8.0.642 159 10/23/2025
8.0.641 156 10/22/2025
8.0.640 156 10/22/2025
8.0.639 147 10/22/2025
8.0.638 149 10/22/2025
8.0.637 149 10/21/2025
8.0.636 151 10/21/2025
8.0.635 151 10/21/2025
8.0.634 155 10/20/2025
8.0.633 154 10/20/2025
8.0.632 160 10/20/2025
8.0.631 153 10/20/2025
8.0.630 106 10/17/2025
8.0.629 162 10/13/2025
8.0.628 166 10/13/2025
8.0.627 157 10/13/2025
8.0.626 87 10/10/2025
8.0.625 91 10/10/2025
8.0.624 111 10/10/2025
8.0.623 118 10/10/2025
8.0.622 155 10/9/2025
8.0.621 157 10/9/2025
8.0.620 158 10/9/2025
8.0.619 152 10/9/2025
8.0.618 161 10/9/2025
8.0.617 151 10/9/2025
8.0.616 155 10/9/2025
8.0.615 158 10/9/2025
8.0.614 153 10/8/2025
8.0.613 157 10/8/2025
8.0.612 161 10/6/2025
8.0.611 117 10/3/2025
8.0.610 123 10/3/2025
8.0.609 114 10/3/2025
8.0.608 125 10/3/2025
8.0.607 124 10/3/2025
8.0.606 124 10/3/2025
8.0.605 125 10/3/2025
8.0.604 124 10/3/2025
8.0.603 127 10/3/2025
8.0.602 163 10/2/2025
8.0.600 170 10/2/2025
8.0.599 156 10/2/2025
8.0.598 163 10/1/2025
8.0.597 159 10/1/2025
8.0.596 162 10/1/2025
8.0.595 156 9/30/2025
8.0.594 154 9/30/2025
8.0.593 149 9/30/2025
8.0.592 159 9/30/2025
8.0.591 156 9/30/2025
8.0.589 152 9/29/2025
8.0.588 164 9/29/2025
8.0.587 148 9/29/2025
8.0.586 154 9/29/2025
8.0.585 159 9/29/2025
8.0.583 122 9/26/2025
8.0.582 142 9/26/2025
8.0.580 161 9/25/2025
8.0.579 166 9/25/2025
8.0.578 165 9/25/2025
8.0.577 152 9/25/2025
8.0.576 148 9/25/2025
8.0.575 166 9/25/2025
8.0.574 171 9/24/2025
8.0.573 166 9/23/2025
8.0.572 152 9/23/2025
8.0.571 171 9/23/2025
8.0.570 163 9/23/2025
8.0.569 186 9/22/2025
8.0.568 210 9/22/2025
8.0.567 223 9/22/2025
8.0.566 192 9/21/2025
6.0.658 64 10/31/2025
6.0.657 100 10/30/2025
6.0.656 99 10/30/2025
6.0.655 96 10/29/2025
6.0.654 98 10/29/2025
6.0.653 104 10/28/2025
6.0.652 97 10/28/2025
6.0.651 107 10/28/2025
6.0.650 146 10/27/2025
6.0.649 147 10/27/2025
6.0.648 109 10/24/2025
6.0.647 116 10/24/2025
6.0.646 124 10/24/2025
6.0.645 120 10/24/2025
6.0.644 158 10/23/2025
6.0.643 160 10/23/2025
6.0.642 156 10/23/2025
6.0.641 147 10/22/2025
6.0.640 149 10/22/2025
6.0.639 146 10/22/2025
6.0.638 151 10/22/2025
6.0.637 143 10/21/2025
6.0.636 154 10/21/2025
6.0.635 150 10/21/2025
6.0.634 154 10/20/2025
6.0.633 154 10/20/2025
6.0.632 153 10/20/2025
6.0.631 152 10/20/2025
6.0.630 112 10/17/2025
6.0.629 158 10/13/2025
6.0.628 160 10/13/2025
6.0.627 159 10/13/2025
6.0.626 83 10/10/2025
6.0.625 88 10/10/2025
6.0.624 105 10/10/2025
6.0.623 116 10/10/2025
6.0.622 153 10/9/2025
6.0.621 150 10/9/2025
6.0.620 155 10/9/2025
6.0.619 154 10/9/2025
6.0.618 155 10/9/2025
6.0.617 152 10/9/2025
6.0.616 152 10/9/2025
6.0.615 156 10/9/2025
6.0.614 157 10/8/2025
6.0.613 156 10/8/2025
6.0.612 153 10/6/2025
6.0.611 115 10/3/2025
6.0.610 113 10/3/2025
6.0.609 103 10/3/2025
6.0.608 117 10/3/2025
6.0.607 121 10/3/2025
6.0.606 125 10/3/2025
6.0.605 123 10/3/2025
6.0.604 120 10/3/2025
6.0.603 134 10/3/2025
6.0.602 160 10/2/2025
6.0.600 162 10/2/2025
6.0.599 155 10/2/2025
6.0.598 164 10/1/2025
6.0.597 160 10/1/2025
6.0.596 161 10/1/2025
6.0.595 152 9/30/2025
6.0.594 160 9/30/2025
6.0.593 160 9/30/2025
6.0.592 156 9/30/2025
6.0.591 158 9/30/2025
6.0.589 159 9/29/2025
6.0.588 158 9/29/2025
6.0.587 160 9/29/2025
6.0.586 154 9/29/2025
6.0.585 155 9/29/2025
6.0.583 119 9/26/2025
6.0.582 143 9/26/2025
6.0.580 163 9/25/2025
6.0.579 167 9/25/2025
6.0.578 160 9/25/2025
6.0.577 158 9/25/2025
6.0.576 159 9/25/2025
6.0.575 159 9/25/2025
6.0.574 166 9/24/2025
6.0.573 153 9/23/2025
6.0.572 164 9/23/2025
6.0.571 164 9/23/2025
6.0.570 166 9/23/2025
6.0.569 185 9/22/2025
6.0.568 206 9/22/2025
6.0.567 222 9/22/2025
6.0.566 189 9/21/2025