源码索引 / CURRENT IMPLEMENTATION
learning/go-patterns/stages/02-dependencies/main_test.go
44 行 · 点击行号可定位;函数链接随声明位置更新,不手填行号。
跳到函数 / 声明
package main
import (
"errors"
"testing"
)
var errFakeSource = errors.New("fake source failure")
type fakeSource struct {
item string
price Price
err error
}
func (f *fakeSource) Lookup(item string) (Price, error) {
f.item = item
return f.price, f.err
}
func TestServiceUsesInjectedSource(t *testing.T) {
source := &fakeSource{price: Price{Item: "book", Cents: 2100}}
service := NewService(source)
got, err := service.Quote("book")
if err != nil {
t.Fatalf("Quote returned error: %v", err)
}
if source.item != "book" {
t.Fatalf("source received %q", source.item)
}
if got != source.price {
t.Fatalf("Quote returned %#v", got)
}
}
func TestServiceReturnsInjectedSourceError(t *testing.T) {
source := &fakeSource{err: errFakeSource}
service := NewService(source)
if _, err := service.Quote("book"); err != errFakeSource {
t.Fatalf("Quote error = %v, want %v", err, errFakeSource)
}
}