作者rwweeeh (Braves)
看板Programming
标题[问题] GOlang 怎麽测试 chan type function
时间Wed Feb 8 14:48:31 2023
小弟这周接触 golang,是一位新手
目前遭遇到一个问题,
测试一个会 return chan type 的 func
测试程式呼叫到此 func 时,会 block 就此没有回应
想问版上大大们,该如何正确测试这类型的 function ?
有关详细程式码描述放在 stack overflow 连结如下,
https://stackoverflow.com/questions/75381842/golang-how-to-test-function-that-return-channel-type
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.163.149.125 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Programming/M.1675838914.A.122.html
1F:→ lycantrope: Done似乎要回传一个chan内含nil 133.51.216.27 02/08 15:15
2F:→ rwweeeh: 试过了 在DoAndReturn回传 还是不work118.163.149.125 02/08 15:18
3F:→ lycantrope: 回传chan error放nil一样错误喔? 133.51.216.27 02/08 15:29
4F:→ terter: 你直接return make(chan err), 然後丢nil 27.105.100.6 02/08 15:39
5F:→ terter: 进去吧。直接给nil,你等半天也不会结束 27.105.100.6 02/08 15:40
6F:→ terter: 补充,总之不能直接return nil, 它会卡 27.105.100.6 02/08 15:44
7F:→ terter: 你要产一个make(chan error), 然後那个 27.105.100.6 02/08 15:45
8F:→ terter: func() chan error那边return那个chan 27.105.100.6 02/08 15:45
9F:→ terter: 最後用go func丢个nil进去那个chan吧 27.105.100.6 02/08 15:45
10F:→ rwweeeh: 大大 尝试过你们的方式118.163.149.125 02/08 16:08
11F:→ rwweeeh: 改法补充在stackoverflow最後面 不work118.163.149.125 02/08 16:09
12F:→ terter: 你不能把ch<-nil放在那,会卡在那边,请用go 122.116.86.61 02/08 21:47
13F:→ terter: func(){ch <- nil } 来丢 122.116.86.61 02/08 21:47
14F:→ terter: 或是你make chan要加大buffer不然会堵塞 122.116.86.61 02/08 21:51
15F:→ lycantrope: CreateVService有mock吗 138.199.39.153 02/08 23:08
16F:→ rwweeeh: 谢各位热心回答,正确写法补充在文章内118.163.149.125 02/09 16:45