Documentation ¶
Overview ¶
Package psiface provides a set of interfaces for the types in cloud.google.com/go/pubsub. These can be used to create mocks or other test doubles. The package also provides adapters to enable the types of the pubsub package to implement these interfaces.
We do not recommend using mocks for most testing. Please read https://testing.googleblog.com/2013/05/testing-on-toilet-dont-overuse-mocks.html.
Note: This package is in alpha. Some backwards-incompatible changes may occur.
You must embed these interfaces to implement them:
type ClientMock struct { psiface.Client ... }
This ensures that your implementations will not break when methods are added to the interfaces.
Index ¶
- type Client
- type ClientMock
- func (c *ClientMock) CreateSubscription(ctx context.Context, id string, cfg SubscriptionConfig) (Subscription, error)
- func (c *ClientMock) CreateTopic(ctx context.Context, topicID string) (Topic, error)
- func (c *ClientMock) Subscription(id string) Subscription
- func (c *ClientMock) Subscriptions(ctx context.Context) ([]Subscription, error)
- func (c *ClientMock) Topic(id string) Topic
- func (c *ClientMock) Topics(ctx context.Context) ([]Topic, error)
- type Message
- type MessageMock
- type PublishResult
- type PublishResultMock
- type Subscription
- type SubscriptionConfig
- type SubscriptionMock
- type Topic
- type TopicMock
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client interface { CreateTopic(ctx context.Context, topicID string) (Topic, error) Topic(id string) Topic Topics(ctx context.Context) ([]Topic, error) CreateSubscription(ctx context.Context, id string, cfg SubscriptionConfig) (Subscription, error) Subscription(id string) Subscription Subscriptions(ctx context.Context) ([]Subscription, error) // contains filtered or unexported methods }
func AdaptClient ¶
AdaptClient adapts a pubsub.Client so that it satisfies the Client interface.
Example ¶
package main import ( "context" "cloud.google.com/go/pubsub" "github.com/tankyouoss/pubsubwrapper" ) func main() { ctx := context.Background() c, err := pubsub.NewClient(ctx, "") if err != nil { // TODO: Handle error. } client := pubsubwrapper.AdaptClient(c) msg := pubsubwrapper.AdaptMessage(&pubsub.Message{}) _, err = client.Topic("my-topic").Publish(ctx, msg).Get(ctx) if err != nil { // TODO: Handle error. } }
Output:
func NewMockedClient ¶
func NewMockedClient() Client
type ClientMock ¶
Client mock
func (*ClientMock) CreateSubscription ¶
func (c *ClientMock) CreateSubscription(ctx context.Context, id string, cfg SubscriptionConfig) (Subscription, error)
func (*ClientMock) CreateTopic ¶
func (*ClientMock) Subscription ¶
func (c *ClientMock) Subscription(id string) Subscription
func (*ClientMock) Subscriptions ¶
func (c *ClientMock) Subscriptions(ctx context.Context) ([]Subscription, error)
func (*ClientMock) Topic ¶
func (c *ClientMock) Topic(id string) Topic
type Message ¶
type Message interface { ID() string Data() []byte Attributes() map[string]string PublishTime() time.Time Ack() Nack() // contains filtered or unexported methods }
func AdaptMessage ¶
AdaptMessage adapts a pubsub.Message so that it satisfies the Message interface.
func NewMockedMessage ¶
func NewMockedMessage() Message
type MessageMock ¶
message
func (*MessageMock) Ack ¶
func (m *MessageMock) Ack()
func (*MessageMock) Attributes ¶
func (m *MessageMock) Attributes() map[string]string
func (*MessageMock) Data ¶
func (m *MessageMock) Data() []byte
func (*MessageMock) ID ¶
func (m *MessageMock) ID() string
func (*MessageMock) Nack ¶
func (m *MessageMock) Nack()
func (*MessageMock) PublishTime ¶
func (m *MessageMock) PublishTime() time.Time
type PublishResult ¶
type PublishResult interface { Get(ctx context.Context) (serverID string, err error) // contains filtered or unexported methods }
func NewMockedPublishResult ¶
func NewMockedPublishResult() PublishResult
type PublishResultMock ¶
publish result
type Subscription ¶
type Subscription interface { String() string Exists(ctx context.Context) (bool, error) Receive(ctx context.Context, f func(context.Context, Message)) error Delete(ctx context.Context) error // contains filtered or unexported methods }
func NewMockedSubscription ¶
func NewMockedSubscription() Subscription
type SubscriptionConfig ¶
type SubscriptionConfig struct { pubsub.SubscriptionConfig Topic Topic // shadows pubsub.SubscriptionConfig's field }
type SubscriptionMock ¶
subscription
func (*SubscriptionMock) Exists ¶
func (s *SubscriptionMock) Exists(ctx context.Context) (bool, error)
func (*SubscriptionMock) String ¶
func (s *SubscriptionMock) String() string
type Topic ¶
type Topic interface { String() string Publish(ctx context.Context, msg Message) PublishResult Exists(ctx context.Context) (bool, error) Delete(ctx context.Context) error // contains filtered or unexported methods }
func NewMockedTopic ¶
func NewMockedTopic() Topic