我看过几个类似的问题,但没有一个案例适合我的问题。我正在尝试模拟一个在其他测试中已经完成的构造函数,但是在使用google-auth-library的情况下我无法使其正常工作
code.js
const {OAuth2Client} = require('google-auth-library');
const keys = require('./oauth2.keys.json');
async function getRedirectUrl() {
const oAuth2Client = new OAuth2Client(
keys.installed.client_id,keys.installed.client_secret,keys.installed.redirect_uris[0]
);
const authorizeUrl = oAuth2Client.generateAuthUrl({
access_type: 'offline',scope: 'https://www.googleapis.com/auth/bigquery',prompt: 'consent'
});
return authorizeUrl;
}
test.js
let Code = require('../code.js');
describe('code',function() {
let generateUrlStub,tokenStub,mockClient;
before(async () => {
generateUrlStub = sinon.stub().returns('http://example.com');
tokenStub = sinon.stub().returns({tokens: 'tokens'});
mockClient = sinon.stub().returns({
generateAuthUrl: generateUrlStub,getToken: tokenStub,});
Code = proxyquire('../Code.js',{
'google-auth-library': mockClient,});
});
it('should call generateAuthUrl',async function() {
const output = await Code.getRedirectUrl();
sinon.assert.called(generateUrlStub)
});
});