package cmd import ( "bytes" "context" "io" "net/http" "os" "testing" ) func TestForecastWeekly(t *testing.T) { client, mux, teardown := setup() defer teardown() mux.HandleFunc("/localForecastDunedin", func(w http.ResponseWriter, r *http.Request) { reader, err := os.Open("data/localForecastDunedin.json") if err != nil { t.Errorf("metweather.forecastWeekly returned error: %v", err) } io.Copy(w, reader) }) ctx := context.Background() out = new(bytes.Buffer) // captured output err := forecastWeekly(client, ctx, "Dunedin") if err != nil { t.Errorf("metweather.forecastWeekly returned error: %v", err) } got := out.(*bytes.Buffer).String() want := `2021-7-16 Partly cloudy 7-13°C 2021-7-17 Showers 8-11°C 2021-7-18 Few showers 7-10°C 2021-7-19 Showers 4-11°C 2021-7-20 Partly cloudy 6-11°C 2021-7-21 Partly cloudy 6-12°C 2021-7-22 Few showers 6-11°C 2021-7-23 Fine 5-10°C 2021-7-24 Fine 5-11°C 2021-7-25 Partly cloudy 6-12°C ` if got != want { t.Errorf("metweather.forecastWeekly\ngot = %q\nwant = %q", got, want) } }