Stdin에 쓰는 코드에 대한 Go 테스트 작성
stdin에서 읽고 이를 다시 stdout에 에코하는 코드에 대한 Go 테스트 작성 , io.Reader 및 io.Writer를 매개변수로 사용하는 별도의 함수로 기능을 분리하는 것이 좋습니다.
stdin 및 stdout을 직접 사용하여 기본 함수에서 모든 작업을 수행하는 대신 코드에서 다음을 정의해야 합니다. 이 특정 목적을 위한 기능입니다. 예를 들면 다음과 같습니다.
<code class="go">func echo(r io.Reader, w io.Writer) { reader := bufio.NewReader(r) for { fmt.Print("> ", w) bytes, _, err := reader.ReadLine() if err == io.EOF { os.Exit(0) } fmt.Println(string(bytes), w) } }</code>
주 함수 내에서 echo 함수를 호출할 수 있습니다.
<code class="go">func main() { echo(os.Stdin, os.Stdout) }</code>
이 함수를 테스트하려면 다음과 같은 테스트를 생성할 수 있습니다.
<code class="go">import ( "bytes" "io" "testing" ) func TestEcho(t *testing.T) { input := "abc\n" expected := "abc\n" r := bytes.NewBufferString(input) w := bytes.NewBufferString("") echo(r, w) if got := w.String(); got != expected { t.Errorf("Expected: %v, Got: %v", expected, got) } }</code>
이 테스트는 지정된 입력 문자열에서 버퍼링된 판독기와 출력을 캡처하기 위한 버퍼링된 기록기를 생성합니다. 그런 다음 echo 함수를 호출하여 판독기와 기록기를 전달합니다. 마지막으로 출력을 예상 결과와 비교합니다.
위 내용은 Stdin에서 읽고 Stdout에 쓰는 Go 코드를 테스트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!