PPysolate SpineREAD THE CODE · UNDERSTAND THE SYSTEM
课程与章节
源码索引 / CURRENT IMPLEMENTATION

learning/go-patterns/patterns/errors/errors_test.go

41 行 · 点击行号可定位;函数链接随声明位置更新,不手填行号。

跳到函数 / 声明
package errors

import (
	"errors"
	"testing"
)

func TestLoadWrapsCategoryAndKeepsDetails(t *testing.T) {
	_, err := Load(map[string]string{}, "invoice-42")
	if err == nil {
		t.Fatal("Load() returned nil error")
	}
	if !errors.Is(err, ErrNotFound) {
		t.Fatalf("errors.Is(err, ErrNotFound) = false; err = %v", err)
	}

	var missing *NotFoundError
	if !errors.As(err, &missing) {
		t.Fatalf("errors.As() = false; err = %v", err)
	}
	if missing.Key != "invoice-42" {
		t.Fatalf("NotFoundError.Key = %q, want %q", missing.Key, "invoice-42")
	}
}

func TestLoadReturnsValueWithoutAnError(t *testing.T) {
	got, err := Load(map[string]string{"invoice-42": "paid"}, "invoice-42")
	if err != nil {
		t.Fatalf("Load() error = %v", err)
	}
	if got != "paid" {
		t.Fatalf("Load() = %q, want %q", got, "paid")
	}
}

func TestLookupErrorContainsStableMessage(t *testing.T) {
	_, err := Lookup(nil, "missing")
	if got, want := err.Error(), `item "missing" not found`; got != want {
		t.Fatalf("error = %q, want %q", got, want)
	}
}