Precept.Data
Database testing for Precept. Provider-agnostic: it works with any ADO.NET provider — SQL Server, PostgreSQL, MySQL, SQLite — supplied by the test project, so no driver is forced on you.
dotnet add package Precept.Data
services.AddPreceptData(cs => new NpgsqlConnection(cs));
await Db.ExecuteAsync(
"insert into clients (id, name) values (@id, @name)",
("id", id), ("name", "Acme"));
var outstanding = await Db.ScalarAsync<long>("select count(*) from outbox where sent = 0");
var rows = await Db.QueryAsync("select id, name from clients where active = 1");
Db.InRolledBackTransactionAsync runs work in a transaction that is always rolled back, for a check
that must leave nothing behind. Connection strings and additional databases are named — every method
takes a database argument defaulting to "Default".
Waiting for the database to catch up is the ordinary assertion sentence, not a sleep:
await Assert.Eventually(() => Db.ScalarAsync<long>("select count(*) from outbox where sent = 0"))
.ToBeEqualAsync(0L);
Part of Precept, a .NET 10 test automation framework. Full documentation: assertions · waiting · configuration