Код IT
← Каталог

Тестирование в Go — Моки через интерфейсы

Фрагмент из «Тестирование в Go»: Моки через интерфейсы.

Go main.go
type UserStore interface {
    Save(name string) error
}

type fakeStore struct {
    saved []string
}

func (f *fakeStore) Save(name string) error {
    f.saved = append(f.saved, name)
    return nil
}

func TestService_Register(t *testing.T) {
    store := &fakeStore{}
    svc := NewService(store)
    require.NoError(t, svc.Register("Ann"))
    assert.Equal(t, []string{"Ann"}, store.saved)
}
type UserStore interface {
    Save(name string) error
}

type fakeStore struct {
    saved []string
}

func (f *fakeStore) Save(name string) error {
    f.saved = append(f.saved, name)
    return nil
}

func TestService_Register(t *testing.T) {
    store := &fakeStore{}
    svc := NewService(store)
    require.NoError(t, svc.Register("Ann"))
    assert.Equal(t, []string{"Ann"}, store.saved)
}