我正在使用 Gmail API,现在我尝试gmail.users.threads.list
为测试用例存根方法。但它不起作用。
我试过了:
const { google } = require('googleapis');
const gmail = google.gmail('v1');
const sinon = require('sinon');
const { Module } = require('path-to-testing-module');
describe('Module testing', () => {
sinon.stub(gmail.users.threads, 'list').returns('ObjectWantToReturn');
it('should call someFunction', () => {
Module.someFunction(); //Cannot call stubbed function inside the module
});
})
它不能调用存根函数
更新
我发现了问题。问题在于对象的破坏。
下面的代码对我有用。
const proxyquire = require('proxyquire');
const sinon = require('sinon');
describe('Module testing', () => {
const googleStub = {
google: {
gmail: sinon.stub().returns({
users: {
threads: {
list: sinon.stub().returns('ObjectWantToReturn')
}
}
})
}
};
const { Module } = proxyquire('./path-to-testing-module', {
'googleapis': googleStub
});
it('should call someFunction', () => {
Module.someFunction(); //Call stubbed function
});
});
require
现在我很困惑,用and导入有什么区别proxyquire
。使用 进行测试时,破坏不会影响proxyquire
。