AzureFunctions.TestFramework.CosmosDB
0.11.1
See the version list below for details.
dotnet add package AzureFunctions.TestFramework.CosmosDB --version 0.11.1
NuGet\Install-Package AzureFunctions.TestFramework.CosmosDB -Version 0.11.1
<PackageReference Include="AzureFunctions.TestFramework.CosmosDB" Version="0.11.1" />
<PackageVersion Include="AzureFunctions.TestFramework.CosmosDB" Version="0.11.1" />
<PackageReference Include="AzureFunctions.TestFramework.CosmosDB" />
paket add AzureFunctions.TestFramework.CosmosDB --version 0.11.1
#r "nuget: AzureFunctions.TestFramework.CosmosDB, 0.11.1"
#:package AzureFunctions.TestFramework.CosmosDB@0.11.1
#addin nuget:?package=AzureFunctions.TestFramework.CosmosDB&version=0.11.1
#tool nuget:?package=AzureFunctions.TestFramework.CosmosDB&version=0.11.1
AzureFunctions.TestFramework.CosmosDB
CosmosDB Trigger, Input, and Output binding support for the Azure Functions Test Framework.
Installation
dotnet add package AzureFunctions.TestFramework.CosmosDB
Supported bindings
| Binding | Attribute | Description |
|---|---|---|
[CosmosDBTrigger] |
Trigger | Receives a batch of changed documents from the CosmosDB change feed |
[CosmosDBInput] |
Input | Reads documents from CosmosDB (point-read or query) |
[CosmosDBOutput] |
Output | Writes documents to CosmosDB — captured via FunctionInvocationResult |
CosmosDB Trigger
Use InvokeCosmosDBAsync to simulate a CosmosDB change-feed trigger with a batch of changed documents.
Strongly-typed documents
var documents = new[]
{
new TodoItem { Id = "1", Title = "Buy milk", IsComplete = false },
new TodoItem { Id = "2", Title = "Write tests", IsComplete = true }
};
var result = await host.InvokeCosmosDBAsync("ProcessCosmosDocuments", documents);
Assert.True(result.Success);
Raw JSON
var json = """[{"id":"1","title":"Buy milk"},{"id":"2","title":"Write tests"}]""";
var result = await host.InvokeCosmosDBAsync("ProcessCosmosDocuments", json);
Assert.True(result.Success);
CosmosDB Input Binding
Register fake documents via the builder so they are injected automatically for every invocation:
var host = await new FunctionsTestHostBuilder()
.WithFunctionsAssembly(typeof(MyFunction).Assembly)
.WithHostBuilderFactory(Program.CreateHostBuilder)
// Single document for [CosmosDBInput(databaseName: "MyDb", containerName: "Items")]
.WithCosmosDBInputDocuments("MyDb", "Items",
new TodoItem { Id = "1", Title = "Injected item", IsComplete = false })
.BuildAndStartAsync();
Use WithCosmosDBInputDocuments<T>(databaseName, containerName, IReadOnlyList<T> documents) to inject a list
of documents, and WithCosmosDBInputJson(databaseName, containerName, json) to inject raw JSON.
Function example
[Function("ReadCosmosItem")]
public void Run(
[QueueTrigger("items-queue")] string queueMessage,
[CosmosDBInput(databaseName: "MyDb", containerName: "Items", Id = "%itemId%")] TodoItem? item)
{
if (item is not null)
_logger.LogInformation("Read item: {Title}", item.Title);
}
CosmosDB Output Binding
Output bindings are captured automatically via FunctionInvocationResult:
var result = await host.InvokeCosmosDBAsync("CreateCosmosDocument", documents);
Assert.True(result.Success);
var written = result.ReadOutputAs<TodoItem>("outputDocument");
Assert.Equal("expected-id", written?.Id);
Function example
[Function("CreateCosmosDocument")]
[CosmosDBOutput(databaseName: "MyDb", containerName: "Items")]
public TodoItem? Run([CosmosDBTrigger(...)] IReadOnlyList<TodoItem> documents)
{
return documents.FirstOrDefault();
}
Testing across all four flavours
Add the CosmosDB package reference to your test project and all four function-app test flavours:
<PackageReference Include="AzureFunctions.TestFramework.CosmosDB" />
See the 4-flavour matrix test pattern for the concrete test class structure.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. 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. |
-
net10.0
- AzureFunctions.TestFramework.Core (>= 0.11.1)
- Microsoft.Azure.Functions.Worker.Extensions.CosmosDB (>= 4.14.0)
-
net8.0
- AzureFunctions.TestFramework.Core (>= 0.11.1)
- Microsoft.Azure.Functions.Worker.Extensions.CosmosDB (>= 4.14.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.