![]() |
VOOZH | about |
dotnet add package AzureFunctions.TestFramework.CosmosDB --version 0.14.0
NuGet\Install-Package AzureFunctions.TestFramework.CosmosDB -Version 0.14.0
<PackageReference Include="AzureFunctions.TestFramework.CosmosDB" Version="0.14.0" />
<PackageVersion Include="AzureFunctions.TestFramework.CosmosDB" Version="0.14.0" />Directory.Packages.props
<PackageReference Include="AzureFunctions.TestFramework.CosmosDB" />Project file
paket add AzureFunctions.TestFramework.CosmosDB --version 0.14.0
#r "nuget: AzureFunctions.TestFramework.CosmosDB, 0.14.0"
#:package AzureFunctions.TestFramework.CosmosDB@0.14.0
#addin nuget:?package=AzureFunctions.TestFramework.CosmosDB&version=0.14.0Install as a Cake Addin
#tool nuget:?package=AzureFunctions.TestFramework.CosmosDB&version=0.14.0Install as a Cake Tool
CosmosDB Trigger, Input, and Output binding support for the Azure Functions Test Framework.
dotnet add package AzureFunctions.TestFramework.CosmosDB
| 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 |
Use InvokeCosmosDBAsync to simulate a CosmosDB change-feed trigger with a batch of changed 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);
var json = """[{"id":"1","title":"Buy milk"},{"id":"2","title":"Write tests"}]""";
var result = await host.InvokeCosmosDBAsync("ProcessCosmosDocuments", json);
Assert.True(result.Success);
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("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);
}
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("CreateCosmosDocument")]
[CosmosDBOutput(databaseName: "MyDb", containerName: "Items")]
public TodoItem? Run([CosmosDBTrigger(...)] IReadOnlyList<TodoItem> documents)
{
return documents.FirstOrDefault();
}
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 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.