Documentation
¶
Overview ¶
Package weavertest provides a way to test Service Weaver components.
Use weavertest.Run to exercise a set of components. For example, imagine we have a Reverser component with a Reverse method that reverses strings. To test the Reverser component, we can create a reverser_test.go file with the following contents.
func TestReverse(t *testing.T) {
weavertest.Run(t, weavetest.Options{}, func(reverser Reverser) {
got, err := reverser.Reverse(ctx, "diaper drawer")
if err != nil {
t.Fatal(err)
}
if want := "reward repaid"; got != want {
t.Fatalf("got %q, want %q", got, want)
}
})
}
weavertest.Run is passed a weavertest.Options, which you can use to configure the execution of the test. By default, weavertest.Run will run every component in a different process. This is similar to what happens when you run weaver multi deploy. If you set the SingleProcess option, weavertest.Run will instead run every component in a single process, similar to what happens when you "go run" a Service Weaver application.
func TestReverseSingle(t *testing.T) {
weavertest.Run(t, weavetest.Options{SingleProcess: true}, func(reverser Reverser) {
// ...
})
}
Index ¶
Constants ¶
const DefaultReplication = 2
The default number of times a component is replicated.
TODO(mwhittaker): Include this in the Options struct?
Variables ¶
This section is empty.
Functions ¶
func Run ¶ added in v0.6.0
Run is a testing version of weaver.Run. Run is passed a function that accepts a list of components. Run will create a brand new weaver application execution environment, create the components whose types are arguments to testBody, and callTestBody with these components.
func TestFoo(t *testing.T) {
weavertest.Run(t, weavertest.Options{}, func(foo Foo, bar Bar) {
// Test foo and bar ...
})
}
The test fails at runtime if testBody is not a function whose signature looks like:
func(ComponentType1) func(ComponentType, ComponentType2) ...
Types ¶
type Options ¶
type Options struct {
// If true, every component is colocated in a single process. Otherwise,
// every component is run in a separate OS process.
SingleProcess bool
// Config contains configuration identical to what might be found in a
// Service Weaver config file. It can contain application level as well as component
// level configuration. Config is allowed to be empty.
Config string
}
Options configure weavertest.Init.
Directories
¶
| Path | Synopsis |
|---|---|
|
internal
|
|
|
generate
Package generate tests that "weaver generate"-generated code *executes* correctly.
|
Package generate tests that "weaver generate"-generated code *executes* correctly. |
|
simple
Package simple is used for a trivial test of code that uses Service Weaver.
|
Package simple is used for a trivial test of code that uses Service Weaver. |