gpt4 book ai didi

javascript - 谷歌日历 sinon stub 似乎不起作用

转载 作者:行者123 更新时间:2023-11-30 19:13:38 24 4
gpt4 key购买 nike

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

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 中,我有:

const { google } = require('googleapis')
const googleCalendar = google.calendar('v3')
let { data } = await googleCalendar.calendarList.list({
auth: oauth2Client
})

但它似乎并没有被 stub 。它会继续并尝试连接到 Google 日历。我做错了什么?

最佳答案

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

const mock = require('mock-require');

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

模拟后,您的模块将使用模拟模块而不是原始模块,因此您可以对其进行测试。所以如果你的模块公开了一个调用 API 的方法,就像这样:

exports.init = async () => {
const { google } = require('googleapis');
const googleCalendar = google.calendar('v3');
let { data } = await googleCalendar.calendarList.list({
auth: 'auth'
});

return data;
}

测试将是

describe('test', () => {
it('should call the api and console the output', async () => {
const result = await init();
assert.isTrue(result.foo === 'bar');
});
});

这是一个可以玩的小仓库:https://github.com/moshfeu/mock-google-apis

关于javascript - 谷歌日历 sinon stub 似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58220773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com