Reo.Core.Builder.CodeGeneration 8.0.575

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.575
                    
NuGet\Install-Package Reo.Core.Builder.CodeGeneration -Version 8.0.575
                    
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.575" />
                    
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.575" />
                    
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.575
                    
#r "nuget: Reo.Core.Builder.CodeGeneration, 8.0.575"
                    
#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.575
                    
#: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.575
                    
Install as a Cake Addin
#tool nuget:?package=Reo.Core.Builder.CodeGeneration&version=8.0.575
                    
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.659 38 11/1/2025
8.0.658 85 10/31/2025
8.0.657 120 10/30/2025
8.0.656 115 10/30/2025
8.0.655 118 10/29/2025
8.0.654 126 10/29/2025
8.0.653 116 10/28/2025
8.0.652 115 10/28/2025
8.0.651 122 10/28/2025
8.0.650 164 10/27/2025
8.0.649 162 10/27/2025
8.0.648 114 10/24/2025
8.0.647 121 10/24/2025
8.0.646 132 10/24/2025
8.0.645 125 10/24/2025
8.0.644 162 10/23/2025
8.0.643 152 10/23/2025
8.0.642 160 10/23/2025
8.0.641 159 10/22/2025
8.0.640 159 10/22/2025
8.0.639 150 10/22/2025
8.0.638 152 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 155 10/20/2025
8.0.632 161 10/20/2025
8.0.631 154 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 156 10/9/2025
8.0.621 158 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 154 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 125 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 162 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.659 36 11/1/2025
6.0.658 79 10/31/2025
6.0.657 112 10/30/2025
6.0.656 111 10/30/2025
6.0.655 109 10/29/2025
6.0.654 111 10/29/2025
6.0.653 117 10/28/2025
6.0.652 110 10/28/2025
6.0.651 120 10/28/2025
6.0.650 160 10/27/2025
6.0.649 161 10/27/2025
6.0.648 110 10/24/2025
6.0.647 118 10/24/2025
6.0.646 125 10/24/2025
6.0.645 121 10/24/2025
6.0.644 159 10/23/2025
6.0.643 161 10/23/2025
6.0.642 157 10/23/2025
6.0.641 150 10/22/2025
6.0.640 152 10/22/2025
6.0.639 149 10/22/2025
6.0.638 154 10/22/2025
6.0.637 143 10/21/2025
6.0.636 154 10/21/2025
6.0.635 151 10/21/2025
6.0.634 156 10/20/2025
6.0.633 155 10/20/2025
6.0.632 154 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 160 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 153 10/9/2025
6.0.615 156 10/9/2025
6.0.614 158 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 126 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 159 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 159 9/25/2025
6.0.576 159 9/25/2025
6.0.575 160 9/25/2025
6.0.574 166 9/24/2025
6.0.573 154 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 207 9/22/2025
6.0.567 222 9/22/2025
6.0.566 189 9/21/2025