-
Notifications
You must be signed in to change notification settings - Fork 0
Setup Guide
Aryeh Citron edited this page Apr 27, 2026
·
1 revision
The simplest approach — create an in-memory BigQuery instance directly:
using var bq = InMemoryBigQuery.Create("test-project", "my_dataset", ds =>
{
ds.AddTable("users", schema);
});
var client = bq.Client;For multi-dataset setups:
using var bq = InMemoryBigQuery.Builder()
.WithProjectId("test-project")
.AddDataset("dataset1", ds =>
{
ds.AddTable("users", usersSchema);
ds.AddTable("orders", ordersSchema);
})
.AddDataset("dataset2", ds =>
{
ds.AddTable("events", eventsSchema);
})
.Build();Replace BigQueryClient in your service collection:
services.UseInMemoryBigQuery(options =>
{
options.ProjectId = "test-project";
options.AddDataset("my_dataset", ds =>
{
ds.AddTable("users", schema);
});
options.OnClientCreated = result =>
{
// Seed data, configure fault injection, etc.
};
});The extension method:
- Discovers existing
BigQueryClientregistrations - Preserves the original service lifetime (singleton, scoped, or transient)
- Replaces with an in-memory backed client
| Option | Type | Description |
|---|---|---|
ProjectId |
string |
GCP project ID for the emulated instance (default: "test-project") |
AddDataset() |
method | Pre-create datasets and tables |
OnClientCreated |
Action<InMemoryBigQueryResult> |
Callback after client creation |
using var bq = InMemoryBigQuery.Create("test-project");
// Simulate 503 Service Unavailable
bq.SetFaultInjector(request =>
new HttpResponseMessage(HttpStatusCode.ServiceUnavailable));
// Clear fault injection
bq.SetFaultInjector(null);using var bq = InMemoryBigQuery.Create("test-project");
// ... perform operations ...
// Check what requests were made
foreach (var entry in bq.Handler.RequestLog)
Console.WriteLine(entry);
// Check what SQL queries were executed
foreach (var query in bq.Handler.QueryLog)
Console.WriteLine(query);Getting Started
Integration & DI
Data Management
Reference