有一个共同的规则是说你不应该嘲笑你不拥有的东西.如果你模拟momentjs函数,你可能会在将来遇到问题.
想象一下,在将来的某个版本中,时刻会改变LT
格式的含义(可疑,但你可以看到问题).升级到新版本后,如果在单元测试中使用了momentjs实现,则测试会检测到此回归.相反,如果你要模拟它并记录返回"5:46 AM",如果用"LT"调用时刻,那么你的测试将是绿色的,尽管生产代码由于momentjs升级而无法工作.
但是,如果你的问题是关于不同的东西,这只是一个很小的例子,你可以(但你不应该)使用callFake模拟一下:
spyOn(window, 'moment').and.callFake(function (date) { return { format: function (format) { /* your format implementation */ } }; });