使用玩笑

时间:2019-03-10 13:20:19

标签: javascript unit-testing jestjs momentjs

我正在尝试模拟moment.js以便预测我的集成测试。
我一直在尝试像this那样嘲笑jest

import moment from 'moment'
...
jest.mock('moment', () => () => ({valueOf: () => 100})

但是当我运行测试时,源代码使用常规的moment

我已经通过执行this成功地替代了moment的行为,但这还不够好,因为它覆盖了我不想更改的更多功能。

1 个答案:

答案 0 :(得分:0)

当我必须模拟moment.js函数时,可以使用stubshttps://sinonjs.org/releases/v7.2.7/stubs/)中的Sinon.js来实现。

基本上是这样的:

import * as sinon from 'sinon'
import moment from 'moment'
...
const stubValueOf = sinon.stub(moment, 'valueOf');
stubValueOf.returns(100);

重要:使用存根的一种好的做法是仅将其用于特定测试,而不是整个测试文件。因此,每次使用后,请使用stubValueOf.restore()。如果要在同一测试中将具有不同值的方法“存根”,请使用stubValueOf.reset()