Reo.Core.Builder.CodeGeneration 6.0.650

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.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" />
                    
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.650
                    
#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
                    
Install as a Cake Addin
#tool nuget:?package=Reo.Core.Builder.CodeGeneration&version=6.0.650
                    
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.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