Не могу понять причину по которой не проходят тесты
Собственно код на Го. Код - полностью рабочий, в нем ничего менять не надо.
package main
import "fmt"
func greet(name string){
fmt.Printf("hello, %v !\n", name)
bye := greet2(name)
fmt.Printf("getting ready to say bye...\n")
bye()
}
func greet2(name string) func() {
fmt.Printf("how are you, %v ?\n", name)
bye := func() {
fmt.Println("ok bye!")
}
return bye
}
func main() {
greet("Sasha")
}
А вот код тестов, который не проходит.
package main
import "testing"
func TestGreet(t *testing.T) {
got := greet("Sasha") // ./scope_test.go:6:14: greet("Sasha") used as value
want := "hello, Sasha !\nhow are you, Sasha ?\ngetting ready to say bye...\nok bye!\n"
if got != want {
t.Errorf("got %q want %q", got, want)
}
}
Подскажите, что я делаю не так и где совершаю ошибку? Так как по правилам написания unit-тестов все должно срабатывать.
Ответы (1 шт):
Автор решения: Ainar-G
→ Ссылка
У вас странные представления о тестах. Функция bye ничего
не возвращает. Либо собирайте строку и возвращайте её, например
с помощью fmt.Sprintf, либо добавляйте
io.Writer в качестве аргумена и используйте
fmt.Fprintf, либо используйте
примеры,
если уж очень хотите именно fmt.Printf.