Reo.Core.Builder.CodeGeneration 10.0.365

There is a newer version of this package available.
See the version list below for details.
dotnet add package Reo.Core.Builder.CodeGeneration --version 10.0.365
                    
NuGet\Install-Package Reo.Core.Builder.CodeGeneration -Version 10.0.365
                    
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="10.0.365" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Reo.Core.Builder.CodeGeneration" Version="10.0.365" />
                    
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 10.0.365
                    
#r "nuget: Reo.Core.Builder.CodeGeneration, 10.0.365"
                    
#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@10.0.365
                    
#: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=10.0.365
                    
Install as a Cake Addin
#tool nuget:?package=Reo.Core.Builder.CodeGeneration&version=10.0.365
                    
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
10.0.366 33 9/24/2026
10.0.365 46 9/23/2026
10.0.364 104 9/17/2026
10.0.363 92 9/17/2026
10.0.362 82 9/17/2026
10.0.361 83 9/17/2026
10.0.360 77 9/14/2026
10.0.359 87 9/14/2026
10.0.358 87 9/14/2026
10.0.357 82 9/14/2026
10.0.356 80 9/14/2026
10.0.355 83 9/14/2026
10.0.354 83 9/14/2026
10.0.353 82 9/14/2026
10.0.352 88 9/14/2026
10.0.351 85 9/14/2026
10.0.350 93 9/11/2026
10.0.347 125 9/8/2026
10.0.346 94 9/8/2026
10.0.345 93 9/8/2026
Loading failed