我想确保我们通过调用具有正确参数的函数来启动goroutine。
例如:
func MyTest(t *testing.T) {
service.EXPECT().MyMockFunc(1)
service.MyFunc()
}
func MyFunc() {
go MyMockFunc(1)
}
当我运行此测试时,它失败了,因为(我相信(只有在测试完成运行后才会调用MyMockFunc
。
有没有办法通过调用具有正确参数的函数来测试我是否启动了 goroutine?
注意:理想情况下,我想保持我传递给MyMockFunc
的参数不变(例如,不添加通道参数(。
使用通道并假设您可以从测试中触发 goroutine:
package main
import (
"fmt"
"testing"
"time"
)
func MyMockFunc(n int) int {
fmt.Println("MyMockFunc is called")
time.Sleep(5 * time.Second)
return n + 1
}
func TestMyMockFunc(t *testing.T) {
result := make(chan int)
go func() {
result <- MyMockFunc(1)
}()
if <-result != 2 {
t.Fatalf("Expecting 2")
}
}