首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >google-calendar sinon存根似乎不工作

google-calendar sinon存根似乎不工作
EN

Stack Overflow用户
提问于 2019-10-03 21:59:53
回答 1查看 159关注 0票数 1

在我的calendar.spec.js中,我有:

代码语言:javascript
复制
const { google } = require('googleapis')
const googleCalendar = google.calendar('v3')
...
before(() => {
    sinon.stub(googleCalendar.calendarList, 'list').resolves({ data: true })
})

after(() => {
    googleCalendar.calendarList.list.restore()
})

在我的calendar.js中,我有:

代码语言:javascript
复制
const { google } = require('googleapis')
const googleCalendar = google.calendar('v3')
let { data } = await googleCalendar.calendarList.list({
  auth: oauth2Client
})

但它看起来并没有被卡住。它继续尝试连接到Google Calendar。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-07 22:30:51

您可以用mock-require模拟整个googleapis模块。

代码语言:javascript
复制
const mock = require('mock-require');

mock('googleapis', {
  google: {
    calendar: () => ({
      calendarList: {
        list: () => {
          return Promise.resolve({
            data: {
              foo: 'bar'
            }
          });
        }
      }
    })
  }
});

一旦你模拟了它,你的模块将使用模拟的模块而不是原来的模块,这样你就可以测试它了。因此,如果您的模块公开了一个调用API的方法,则如下所示:

代码语言:javascript
复制
exports.init = async () => {
  const { google } = require('googleapis');
  const googleCalendar = google.calendar('v3');
  let { data } = await googleCalendar.calendarList.list({
    auth: 'auth'
  });

  return data;
}

测试将是

代码语言:javascript
复制
describe('test', () => {
  it('should call the api and console the output', async () => {
    const result = await init();
    assert.isTrue(result.foo === 'bar');
  });
});

下面是一个可以使用它的小repo:https://github.com/moshfeu/mock-google-apis

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58220773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档