schema.js
:
const uuid = require('uuid');
.......
const sessionId = uuid.v1();
schema.test.js
:
const uuid = sinon.mock(require('uuid'));
.......
uuid.expects('v1').returns('00000000-0000-0000-0000-000000000000');
上面的方法非常有效,sessionId
获得了0000.....
的值。
但是,schema.js
文件实际上看起来像这样:
const uuidv1 = require('uuid/v1');
.......
const sessionId = uuidv1();
应该如何schema.test.js
才能使sessionId
获得0000.....
的值?
const mockUuid = sinon.mock(require('uuid/v1'));
........
mockUuid.returns('00000000-0000-0000-0000-000000000000');
返回TypeError: mockUuid.returns is not a function
。
const mockUuid = sinon.mock(require('uuid/v1'));
........
mockUuid.expects().returns('00000000-0000-0000-0000-000000000000');
也不起作用。
有什么想法吗?
答案 0 :(得分:1)
我遇到了同样的问题,只是重构了代码以使其更易于测试。我只是将导入从const uuidv1 = require('uuid/v1');
更改为const uuid = require('uuid');
,并将代码中被调用的位置从let newUuid = uuidv1();
更改为let uuid.v1();
这使我能够像您在第一段中那样进行单元测试。编写测试的一部分是重构代码以使其更易于测试,因此我认为这种方法没有问题。