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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestione opzioni colonna nella Blazor QuickGrid
Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
Cambiamenti in OpenAPI per la documentazione di ASP.NET
Costruire endpoint SSE in ASP.NET Core
Effettuare la ricerca di testo nascosto in una pagina web con Javascript
Gestire gli errori nelle Promise JavaScript con try()
Ciclo di vita risorse con .NET Aspire
Utilizzare Intersect e Except per filtrare set di dati in TSql
Personalizzare i parametri del CSS Scroll Snap
Validazione personalizzata nelle Minimal API di ASP.NET Core
Gestione delle issue type con GitHub
Gestione ciclo di vita in .NET Aspire


