我有一个简单的方法,它只检查参数是否为空,然后根据结构字段调用两种方法之一。我将如何测试它?func (cT *customType) someMethod(message string) { if message == ""{ return } if cT.value == nil { cT.doFunctionOne() } else { cT.doFunctionTwo() }}在 Javascript 中,我会创建一个间谍doFunctionOne()并模拟对象。模拟也Go很有效,但我将如何做“间谍”部分?或者是否有另一种惯用的方法来测试这种方法?
3 回答
ibeautiful
TA贡献1993条经验 获得超5个赞
第一:您不会将方法命名为“doFunctionOne”而是“methodOne”:-)
如果 doFunctionOne 和 doFunctionTwo 都没有任何可观察到的效果,那么测试它绝对没有意义。所以我们可以假设它们确实有可观察到的副作用,无论是对环境还是对它们被调用的 customType。
现在只需测试这些副作用。如果两种方法都返回,这是微不足道的。如果它们无限循环,它会变得更难,但仍然可行。
恕我直言,没有必要从“根据值测试它是调用一还是二”的意义上来“测试”这种方法:对我来说,这是低级的,过多地增加覆盖率是徒劳的。如果你调用某个方法,它必须做一些事情(可观察到的效果),你应该检查这个效果,而不是内部工作原理。
慕的地8271018
TA贡献1796条经验 获得超4个赞
您可以在每个函数调用之前添加日志。
注入您自己的记录器实现,例如 []string。
检查字符串切片是否有匹配的字符串。
但是,如果您正在创建函数工厂,最好将函数返回给调用者并且调用者将运行该函数。
然后测试很简单。
其次,只有两种函数,流函数和逻辑函数。您在同一个函数中混合了流和逻辑。测试困难只是这种不良做法的一个症状。
- 3 回答
- 0 关注
- 202 浏览
添加回答
举报
0/150
提交
取消