Reo.Core.Builder.CodeGeneration 6.0.680

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.680
                    
NuGet\Install-Package Reo.Core.Builder.CodeGeneration -Version 6.0.680
                    
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.680" />
                    
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.680" />
                    
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.680
                    
#r "nuget: Reo.Core.Builder.CodeGeneration, 6.0.680"
                    
#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.680
                    
#: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.680
                    
Install as a Cake Addin
#tool nuget:?package=Reo.Core.Builder.CodeGeneration&version=6.0.680
                    
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.703 0 11/26/2025
8.0.701 0 11/26/2025
8.0.700 0 11/26/2025
8.0.699 0 11/26/2025
8.0.697 0 11/26/2025
8.0.692 83 11/24/2025
8.0.691 291 11/21/2025
8.0.690 375 11/20/2025
8.0.689 378 11/20/2025
8.0.686 382 11/18/2025
8.0.685 377 11/18/2025
8.0.682 380 11/18/2025
8.0.681 311 11/17/2025
8.0.680 311 11/17/2025
8.0.679 286 11/17/2025
8.0.678 257 11/13/2025
8.0.677 264 11/11/2025
8.0.676 265 11/11/2025
8.0.675 261 11/11/2025
8.0.674 264 11/11/2025
8.0.673 257 11/10/2025
8.0.672 239 11/10/2025
8.0.671 117 11/7/2025
8.0.670 113 11/7/2025
8.0.669 112 11/7/2025
8.0.668 122 11/7/2025
8.0.667 151 11/7/2025
8.0.666 156 11/7/2025
8.0.665 175 11/6/2025
8.0.664 177 11/6/2025
8.0.663 172 11/6/2025
8.0.662 173 11/6/2025
8.0.661 169 11/5/2025
8.0.660 175 11/5/2025
8.0.659 113 11/1/2025
8.0.658 148 10/31/2025
8.0.657 179 10/30/2025
8.0.656 173 10/30/2025
8.0.655 173 10/29/2025
8.0.654 181 10/29/2025
8.0.653 169 10/28/2025
8.0.652 168 10/28/2025
8.0.651 175 10/28/2025
8.0.650 171 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 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.701 0 11/26/2025
6.0.699 0 11/26/2025
6.0.692 83 11/24/2025
6.0.691 288 11/21/2025
6.0.690 370 11/20/2025
6.0.689 375 11/20/2025
6.0.686 375 11/18/2025
6.0.685 380 11/18/2025
6.0.682 376 11/18/2025
6.0.681 306 11/17/2025
6.0.680 307 11/17/2025
6.0.679 284 11/17/2025
6.0.678 253 11/13/2025
6.0.677 260 11/11/2025
6.0.676 258 11/11/2025
6.0.675 259 11/11/2025
6.0.674 265 11/11/2025
6.0.673 252 11/10/2025
6.0.672 239 11/10/2025
6.0.671 107 11/7/2025
6.0.670 110 11/7/2025
6.0.669 115 11/7/2025
6.0.668 112 11/7/2025
6.0.667 143 11/7/2025
6.0.666 153 11/7/2025
6.0.665 166 11/6/2025
6.0.664 170 11/6/2025
6.0.663 171 11/6/2025
6.0.662 169 11/6/2025
6.0.661 168 11/5/2025
6.0.660 167 11/5/2025
6.0.659 111 11/1/2025
6.0.658 140 10/31/2025
6.0.657 170 10/30/2025
6.0.656 169 10/30/2025
6.0.655 164 10/29/2025
6.0.654 166 10/29/2025
6.0.653 172 10/28/2025
6.0.652 163 10/28/2025
6.0.651 173 10/28/2025
6.0.650 167 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 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