在我的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
})
但是它似乎没有被存根。它会继续并尝试连接到Google日历。我在做什么错了?
答案 0 :(得分:1)
您可以使用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