Go1.16으로 추가된 iotest.ErrReader io를 사용합니다.Reader의 예외 시스템 테스트
io.ReadAll과 같은 예외 시스템을 테스트하고 싶습니다.
예를 들어 아래
io.Reader
를 받아들이고 내용 문자열의 함수를 되돌려 주려고 할 때io.ReadAll
는 되돌려 주기 어려워err
하기 때문에 이상 시스템의 테스트를 쓰기 어렵다.read.go
import "io"
func read(r io.Reader) (string, error) {
b, err := io.ReadAll(r)
if err != nil {
return "", err
}
return string(b), nil
}
iotest.ErrReader를 사용하면 됩니다.
Go 1.16에서 새로 추가된
testing/iotest
포장에 추가된iotest.ErrReader
을 사용하면 수반된io.Reader
함수의 이상 시스템을 간단하게 테스트할 수 있다.read_test.go
import (
"errors"
"io"
"strings"
"testing"
"testing/iotest"
)
func Test_read(t *testing.T) {
t.Parallel()
cases := map[string]struct {
r io.Reader
str string
noErr bool
}{
"success": {
r: strings.NewReader("test"),
str: "test",
noErr: true,
},
"failure": {
r: iotest.ErrReader(errors.New("test")),
str: "",
noErr: false,
},
}
for name, c := range cases {
c := c
t.Run(name, func(t *testing.T) {
t.Parallel()
str, err := read(c.r)
if str != c.str {
t.Errorf("want '%v', got '%v'", c.str, str)
}
if c.noErr {
if err != nil {
t.Error("want 'nil', got 'not nil'")
}
} else {
if err == nil {
t.Error("want 'not nil', got 'nil'")
}
}
})
}
}
덮어쓰기도 좋아요.
Reference
이 문제에 관하여(Go1.16으로 추가된 iotest.ErrReader io를 사용합니다.Reader의 예외 시스템 테스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/rinchsan/articles/e37c4444d601246536ec텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)