#javascript #sinon #stub #testcase #proxyquire
#javascript #sinon #заглушка #testcase #proxyquire
Вопрос:
Я использую API Gmail, теперь я пытаюсь gmail.users.threads.list
использовать метод stub для тестовых случаев. Но это не работает.
Я пытался:
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
.
Комментарии:
1. Можете ли вы попробовать
sinon.stub(gmail.users.threads, 'list')
?2. Пробовал, но он вызывает реальный метод.