问题描述
我正在使用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
和proxyquire
导入之间有什么区别。使用proxyquire
测试时,销毁不会受到影响。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)