Utilizzare i command service nei test con .NET Aspire

di Morgan Pizzini, in ASP.NET Core,

I command service non sono solo utili durante lo sviluppo, in quanto permettono di eseguire azioni da amministratore di sistema senza riavviare l'esecuzione del processo, ma sono anche funzionali nella scrittura dei test.

Tramite una definizione del tutto simile a quella gia configurata nell' Host di .NET Aspire, possiamo scrivere un test che verifichi la funzionalità del comando e al tempo stesso creare dei metodi di utilità che permettano la pulizia o un controllo ulteriore sulla validità dei test.

Nell'esempio stiamo verificando che la cache venga correttamente ripulita all'invocazione del comando, per poi riutilizzare la medesima configurazione durante lo startup di ogni test.

[Fact]
public async Task Should_ResetCache_WhenTestStarts()
{
    var builder = DistributedApplication.CreateBuilder();
    
    // implementazione della cache e del comando di reset
    var cache = builder.AddRedis("test-cache")
        .WithHttpCommand("reset", "Reset Cache",
            commandName: "reset-cache",
            commandOptions: new HttpCommandOptions
            {
                Method = HttpMethod.Delete,
                Description = "Clear all cached test data"
            });

    var api = builder.AddProject<Projects.TestApi>("test-api")
        .WithReference(cache);

    await using var app = builder.Build();
    await app.StartAsync();
    
    // Reset cache
    var result = await app.ResourceCommands.ExecuteCommandAsync(
        cache.Resource, 
        "reset-cache", 
        CancellationToken.None);
        
    Assert.True(result.Success, $"Failed to reset cache: {result.ErrorMessage}");
}

Commenti

Visualizza/aggiungi commenti

| Condividi su: LinkedIn, Facebook

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi