azure-sdk-for-go/sdk/samples/fakes
Charles Lowell fe87e2d52c Upgrade dependencies [azp skip] 2024-07-17 15:56:28 +00:00
..
README.md
examples_test.go
go.mod Upgrade dependencies [azp skip] 2024-07-17 15:56:28 +00:00
go.sum Upgrade dependencies [azp skip] 2024-07-17 15:56:28 +00:00

README.md

Examples using fakes

The examples in this module demonstrate using the fake subpackage for creating unit tests. While the examples use armcompute, the patterns are applicable to any module with a fake subpackage.

Fakes

The fake package found in most modules provides implementations for fake servers that can be used for testing.

To create a fake server, declare an instance of the required fake server type(s).

import "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5/fake"

myFakeVirtualMachinesServer := fake.VirtualMachinesServer{}

Next, provide func implementations for the client methods you wish to fake. The named return variables can be used to simplify return value construction.

import azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake"

myFakeVirtualMachinesServer.Get = func(ctx context.Context, resourceGroupName string, vmName string, options *armcompute.VirtualMachinesClientGetOptions) (resp azfake.Responder[armcompute.VirtualMachinesClientGetResponse], errResp azfake.ErrorResponder) {
	// TODO: resp.SetResponse(/* your fake armcompute.VirtualMachinesClientGetResponse response */)
	return
}

You connect the fake server to a client instance during its construction through the optional transport.

Use the TokenCredential type from azcore/fake to create a fake azcore.TokenCredential.

import azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake"

client, err := armcompute.VirtualMachinesClient("fake-subscription-id", &azfake.TokenCredential{}, &arm.ClientOptions{
	ClientOptions: azcore.ClientOptions{
		Transport: fake.NewVirtualMachinesServerTransport(&myFakeVirtualMachinesServer),
	},
})

Calling methods on the client will pass the provided values to the matching fake implementation. The values can be arbitrary, including the zero-value for any/all parameters.

resp, err := client.Get(context.TODO(), "fake-resource-group", "fake-vm", nil)

The values returned from client method calls are defined in the fake.