Cosmos.EventDriven.Testing.Utilities 0.0.1-RC.4

This is a prerelease version of Cosmos.EventDriven.Testing.Utilities.
dotnet add package Cosmos.EventDriven.Testing.Utilities --version 0.0.1-RC.4
                    
NuGet\Install-Package Cosmos.EventDriven.Testing.Utilities -Version 0.0.1-RC.4
                    
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="Cosmos.EventDriven.Testing.Utilities" Version="0.0.1-RC.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Cosmos.EventDriven.Testing.Utilities" Version="0.0.1-RC.4" />
                    
Directory.Packages.props
<PackageReference Include="Cosmos.EventDriven.Testing.Utilities" />
                    
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 Cosmos.EventDriven.Testing.Utilities --version 0.0.1-RC.4
                    
#r "nuget: Cosmos.EventDriven.Testing.Utilities, 0.0.1-RC.4"
                    
#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 Cosmos.EventDriven.Testing.Utilities@0.0.1-RC.4
                    
#: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=Cosmos.EventDriven.Testing.Utilities&version=0.0.1-RC.4&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Cosmos.EventDriven.Testing.Utilities&version=0.0.1-RC.4&prerelease
                    
Install as a Cake Tool

Cosmos.EventDriven.Testing.Utilities

NuGet

Utilidades para pruebas unitarias de Event Driven para .NET 10.

Descripción

Este paquete provee clases abstractas e implementaciones in-memory para facilitar la creación de pruebas unitarias en arquitecturas Event-Driven. Permite verificar que los eventos privados y públicos correctos son publicados durante la ejecución de un handler, sin depender de infraestructura real (mensajería, buses de eventos).

Instalación

dotnet add package Cosmos.EventDriven.Testing.Utilities

Clases disponibles

EventDrivenAsyncTest

Clase base abstracta para pruebas de handlers que publican eventos privados y/o públicos. Expone dos senders in-memory y métodos de aserción:

Miembro Descripción
PrivateEventSender Instancia de TestPrivateEventSender para capturar eventos privados
PublicEventSender Instancia de TestPublicEventSender para capturar eventos públicos
ThenIsPublishedPrivately(params IPrivateEvent[]) Verifica que los eventos privados publicados coincidan con los esperados
ThenIsPublishedPublicly(params IPublicEvent[]) Verifica que los eventos públicos publicados coincidan con los esperados

TestPrivateEventSender

Implementación in-memory de IPrivateEventSender. Acumula los eventos recibidos en Events para ser inspeccionados en las aserciones.

TestPublicEventSender

Implementación in-memory de IPublicEventSender. Acumula los eventos recibidos en Events para ser inspeccionados en las aserciones.


Ejemplo de uso

public class ProcesarPedidoTest : EventDrivenAsyncTest
{
    private readonly ProcesarPedidoHandler _handler;

    public ProcesarPedidoTest()
    {
        _handler = new ProcesarPedidoHandler(PrivateEventSender, PublicEventSender);
    }

    [Fact]
    public async Task Si_ProcesoPedido_Debe_PublicarEventos()
    {
        // Given
        var comando = new ProcesarPedido(Guid.NewGuid());

        // When
        await _handler.HandleAsync(comando);

        // Then
        ThenIsPublishedPrivately(new PedidoRecibido(comando.PedidoId));
        ThenIsPublishedPublicly(new PedidoConfirmado(comando.PedidoId));
    }
}

Notas adicionales

  • Los senders son in-memory, ideales para pruebas unitarias rápidas y aisladas.
  • ThenIsPublishedPrivately y ThenIsPublishedPublicly validan tanto la cantidad como el tipo y contenido de cada evento.
  • Los eventos sin propiedades (vacíos) pasan la validación si el tipo coincide.

Requisitos

  • .NET 10.0 o superior

Dependencias

  • AwesomeAssertions (v9.4.0) - Librería de assertions fluidas
  • xUnit (v3.2.2) - Framework de testing
  • Cosmos.EventDriven.Abstractions - Abstracciones de Event Driven

Paquetes Relacionados

Licencia

Copyright © Cosmos. Todos los derechos reservados.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in 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.