io.Reader のモック生成には bytes.NewBufferString を使う
以下のようにbufio.Scanner を使った処理のテストを書く場合、io.Reader のモックがほしい。
code:main.go
import (
"bufio"
"fmt"
"io"
"os"
)
func main() {
input(io.Stdin)
}
func input(r io.Reader) {
s := bufio.NewScanner(r)
for s.Scan() {
fmt.Println(s.Text())
}
}
io.Reader であれば何でも良いので、bytes.NewBufferString や strings.NewReader を使えばOK
code:main_test.go
func Test_input(t *testing.T) {
r := bytes.NewBufferString("hoge\nfuga") // or strings.NewReader("hoge\nfuga")
input(r)
// => hoge
// => fuga
}
参考