The same server also supports database admin operations for use with
the cloud.google.com/go/spanner/admin/database/apiv1 package. This only
simulates the existence of a single database; its name is ignored.
NewServer creates a new Server.
The Server will be listening for gRPC connections, without TLS, on the provided TCP address.
The resolved address is available in the Addr field.
This is a convenience method for tests that may assume an existing schema.
The more general approach is to dial this server using an admin client, and
use the UpdateDatabaseDdl RPC method.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[[["\u003cp\u003eThis webpage provides documentation and access to various versions of the \u003ccode\u003espannertest\u003c/code\u003e package, a collection of test helpers for Cloud Spanner.\u003c/p\u003e\n"],["\u003cp\u003eThe latest version of the \u003ccode\u003espannertest\u003c/code\u003e package is 1.77.0, and the page lists several previous versions that are accessible for older packages.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003espannertest\u003c/code\u003e offers an in-memory fake implementation of Spanner that can be used for testing, which requires either direct connection to a created server or setting the \u003ccode\u003eSPANNER_EMULATOR_HOST\u003c/code\u003e environment variable.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003espannertest\u003c/code\u003e package includes a \u003ccode\u003eServer\u003c/code\u003e struct, which is an in-memory, unauthenticated, non-performant fake Cloud Spanner instance that simulates a single database.\u003c/p\u003e\n"],["\u003cp\u003eThe server can have a logger attached to it via the \u003ccode\u003eSetLogger\u003c/code\u003e function and DDL schema changes can be applied to the server via \u003ccode\u003eUpdateDDL\u003c/code\u003e function, to simulate database schema changes.\u003c/p\u003e\n"]]],[],null,["# Package cloud.google.com/go/spanner/spannertest (v1.79.0)\n\nVersion latestkeyboard_arrow_down\n\n- [1.79.0 (latest)](/go/docs/reference/cloud.google.com/go/spanner/latest/spannertest)\n- [1.78.0](/go/docs/reference/cloud.google.com/go/spanner/1.78.0/spannertest)\n- [1.77.0](/go/docs/reference/cloud.google.com/go/spanner/1.77.0/spannertest)\n- [1.76.1](/go/docs/reference/cloud.google.com/go/spanner/1.76.1/spannertest)\n- [1.75.0](/go/docs/reference/cloud.google.com/go/spanner/1.75.0/spannertest)\n- [1.74.0](/go/docs/reference/cloud.google.com/go/spanner/1.74.0/spannertest)\n- [1.73.0](/go/docs/reference/cloud.google.com/go/spanner/1.73.0/spannertest)\n- [1.72.0](/go/docs/reference/cloud.google.com/go/spanner/1.72.0/spannertest)\n- [1.71.0](/go/docs/reference/cloud.google.com/go/spanner/1.71.0/spannertest)\n- [1.70.0](/go/docs/reference/cloud.google.com/go/spanner/1.70.0/spannertest)\n- [1.69.0](/go/docs/reference/cloud.google.com/go/spanner/1.69.0/spannertest)\n- [1.68.0](/go/docs/reference/cloud.google.com/go/spanner/1.68.0/spannertest)\n- [1.67.0](/go/docs/reference/cloud.google.com/go/spanner/1.67.0/spannertest)\n- [1.66.0](/go/docs/reference/cloud.google.com/go/spanner/1.66.0/spannertest)\n- [1.65.0](/go/docs/reference/cloud.google.com/go/spanner/1.65.0/spannertest)\n- [1.64.0](/go/docs/reference/cloud.google.com/go/spanner/1.64.0/spannertest)\n- [1.63.0](/go/docs/reference/cloud.google.com/go/spanner/1.63.0/spannertest)\n- [1.62.0](/go/docs/reference/cloud.google.com/go/spanner/1.62.0/spannertest)\n- [1.61.0](/go/docs/reference/cloud.google.com/go/spanner/1.61.0/spannertest)\n- [1.60.0](/go/docs/reference/cloud.google.com/go/spanner/1.60.0/spannertest)\n- [1.59.0](/go/docs/reference/cloud.google.com/go/spanner/1.59.0/spannertest)\n- [1.58.0](/go/docs/reference/cloud.google.com/go/spanner/1.58.0/spannertest)\n- [1.57.0](/go/docs/reference/cloud.google.com/go/spanner/1.57.0/spannertest)\n- [1.56.0](/go/docs/reference/cloud.google.com/go/spanner/1.56.0/spannertest)\n- [1.55.0](/go/docs/reference/cloud.google.com/go/spanner/1.55.0/spannertest)\n- [1.54.0](/go/docs/reference/cloud.google.com/go/spanner/1.54.0/spannertest)\n- [1.53.1](/go/docs/reference/cloud.google.com/go/spanner/1.53.1/spannertest)\n- [1.52.0](/go/docs/reference/cloud.google.com/go/spanner/1.52.0/spannertest)\n- [1.49.0](/go/docs/reference/cloud.google.com/go/spanner/1.49.0/spannertest)\n- [1.48.0](/go/docs/reference/cloud.google.com/go/spanner/1.48.0/spannertest)\n- [1.47.0](/go/docs/reference/cloud.google.com/go/spanner/1.47.0/spannertest)\n- [1.46.0](/go/docs/reference/cloud.google.com/go/spanner/1.46.0/spannertest)\n- [1.45.1](/go/docs/reference/cloud.google.com/go/spanner/1.45.1/spannertest)\n- [1.44.0](/go/docs/reference/cloud.google.com/go/spanner/1.44.0/spannertest)\n- [1.43.0](/go/docs/reference/cloud.google.com/go/spanner/1.43.0/spannertest)\n- [1.42.0](/go/docs/reference/cloud.google.com/go/spanner/1.42.0/spannertest)\n- [1.41.0](/go/docs/reference/cloud.google.com/go/spanner/1.41.0/spannertest)\n- [1.40.0](/go/docs/reference/cloud.google.com/go/spanner/1.40.0/spannertest)\n- [1.39.0](/go/docs/reference/cloud.google.com/go/spanner/1.39.0/spannertest)\n- [1.38.0](/go/docs/reference/cloud.google.com/go/spanner/1.38.0/spannertest)\n- [1.37.0](/go/docs/reference/cloud.google.com/go/spanner/1.37.0/spannertest)\n- [1.36.0](/go/docs/reference/cloud.google.com/go/spanner/1.36.0/spannertest)\n- [1.35.0](/go/docs/reference/cloud.google.com/go/spanner/1.35.0/spannertest)\n- [1.34.1](/go/docs/reference/cloud.google.com/go/spanner/1.34.1/spannertest)\n- [1.33.0](/go/docs/reference/cloud.google.com/go/spanner/1.33.0/spannertest)\n- [1.32.0](/go/docs/reference/cloud.google.com/go/spanner/1.32.0/spannertest)\n- [1.31.0](/go/docs/reference/cloud.google.com/go/spanner/1.31.0/spannertest)\n- [1.30.1](/go/docs/reference/cloud.google.com/go/spanner/1.30.1/spannertest)\n- [1.29.0](/go/docs/reference/cloud.google.com/go/spanner/1.29.0/spannertest)\n- [1.28.0](/go/docs/reference/cloud.google.com/go/spanner/1.28.0/spannertest)\n- [1.27.0](/go/docs/reference/cloud.google.com/go/spanner/1.27.0/spannertest)\n- [1.26.0](/go/docs/reference/cloud.google.com/go/spanner/1.26.0/spannertest)\n- [1.25.0](/go/docs/reference/cloud.google.com/go/spanner/1.25.0/spannertest)\n- [1.24.1](/go/docs/reference/cloud.google.com/go/spanner/1.24.1/spannertest)\n- [1.23.0](/go/docs/reference/cloud.google.com/go/spanner/1.23.0/spannertest)\n- [1.22.0](/go/docs/reference/cloud.google.com/go/spanner/1.22.0/spannertest)\n- [1.21.0](/go/docs/reference/cloud.google.com/go/spanner/1.21.0/spannertest)\n- [1.20.0](/go/docs/reference/cloud.google.com/go/spanner/1.20.0/spannertest)\n- [1.19.0](/go/docs/reference/cloud.google.com/go/spanner/1.19.0/spannertest)\n- [1.18.0](/go/docs/reference/cloud.google.com/go/spanner/1.18.0/spannertest)\n- [1.17.0](/go/docs/reference/cloud.google.com/go/spanner/1.17.0/spannertest)\n- [1.16.0](/go/docs/reference/cloud.google.com/go/spanner/1.16.0/spannertest)\n- [1.15.0](/go/docs/reference/cloud.google.com/go/spanner/1.15.0/spannertest)\n- [1.14.1](/go/docs/reference/cloud.google.com/go/spanner/1.14.1/spannertest)\n- [1.13.0](/go/docs/reference/cloud.google.com/go/spanner/1.13.0/spannertest) \n**Note:** To get more information about this package, such as access to older versions, view [this package on pkg.go.dev](https://pkg.go.dev/cloud.google.com/go/spanner/spannertest). \n\u003cbr /\u003e\n\nPackage spannertest contains test helpers for working with Cloud Spanner.\n\nThis package is EXPERIMENTAL, and is lacking several features. See the README.md\nfile in this directory for more details.\n\nIn-memory fake\n--------------\n\nThis package has an in-memory fake implementation of spanner. To use it,\ncreate a Server, and then connect to it with no security: \n\n```go\nsrv, err := spannertest.NewServer(\"localhost:0\")\n...\nconn, err := grpc.DialContext(ctx, srv.Addr, grpc.WithTransportCredentials(insecure.NewCredentials()))\n...\nclient, err := spanner.NewClient(ctx, db, option.WithGRPCConn(conn))\n...\n```\n\n\u003cbr /\u003e\n\nAlternatively, create a Server, then set the SPANNER_EMULATOR_HOST environment\nvariable and use the regular spanner.NewClient: \n\n```go\nsrv, err := spannertest.NewServer(\"localhost:0\")\n...\nos.Setenv(\"SPANNER_EMULATOR_HOST\", srv.Addr)\nclient, err := spanner.NewClient(ctx, db)\n...\n```\n\n\u003cbr /\u003e\n\nThe same server also supports database admin operations for use with\nthe cloud.google.com/go/spanner/admin/database/apiv1 package. This only\nsimulates the existence of a single database; its name is ignored. \n\nLogger\n------\n\n type Logger func(format https://pkg.go.dev/builtin#string, args ...interface{})\n\nLogger is something that can be used for logging.\nIt is matched by log.Printf and testing.T.Logf. \n\nServer\n------\n\n type Server struct {\n \tAddr https://pkg.go.dev/builtin#string\n \t// contains filtered or unexported fields\n }\n\nServer is an in-memory Cloud Spanner fake.\nIt is unauthenticated, non-performant, and only a rough approximation. \n\n### func NewServer\n\n func NewServer(laddr https://pkg.go.dev/builtin#string) (*#cloud_google_com_go_spanner_spannertest_Server, https://pkg.go.dev/builtin#error)\n\nNewServer creates a new Server.\nThe Server will be listening for gRPC connections, without TLS, on the provided TCP address.\nThe resolved address is available in the Addr field. \n\n### func (\\*Server) Close\n\n func (s *#cloud_google_com_go_spanner_spannertest_Server) Close()\n\nClose shuts down the server. \n\n### func (\\*Server) SetLogger\n\n func (s *#cloud_google_com_go_spanner_spannertest_Server) SetLogger(l #cloud_google_com_go_spanner_spannertest_Logger)\n\nSetLogger sets a logger for the server.\nYou can use a \\*testing.T as this argument to collate extra information\nfrom the execution of the server. \n\n### func (\\*Server) UpdateDDL\n\n func (s *#cloud_google_com_go_spanner_spannertest_Server) UpdateDDL(ddl */go/docs/reference/cloud.google.com/go/spanner/latest/spansql./go/docs/reference/cloud.google.com/go/spanner/latest/spansql#cloud_google_com_go_spanner_spansql_DDL) https://pkg.go.dev/builtin#error\n\nUpdateDDL applies the given DDL to the server.\n\nThis is a convenience method for tests that may assume an existing schema.\nThe more general approach is to dial this server using an admin client, and\nuse the UpdateDatabaseDdl RPC method."]]