背景
在单元测试时,有时候会碰到代码中使用了 time, date 等函数,然后根据这些函数的返回执行不同的分支。
这种情况下想要覆盖到所有分支,可以通过在相同命名空间下定义同名函数,来达到mock的目的
例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| namespace foo;
if (time() >= strtotime('2019-01-01')) { ... } else { ... }
namespace foo;
function time() { return strtotime('2018-01-01'); }
|
参考 https://stackoverflow.com/a/5337635