azure-sdk-for-go/sdk/samples/fakes/README.md

2.0 KiB

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.