Я пытаюсь настроить модульные тесты в моем проекте. Для этого я использую библиотеки мокко чай и синон. Я использую сервер NodeJs версии 8.
Версии:
Синон: "7.1.0"
Мокко: "5.1.0"
Чай: "4.2.0"
Я бы хотел заглушить метод, который объявлен в другом файле.
Вот пример:
- a.js
exports.FnA(return FnB())
- b.js
exports.FnB()
Я хочу заглушить метод FnB () из файла b.js, чтобы я мог проверить FnA () независимо от возврата FnB ().
Вот что я пробовал:
beforeEach(() => {
this.FnBStub = sinon.stub(b, 'FnB').returns('mocked');
});
afterEach(() => this.FnBStub.restore());
it('should mocked FnB function', () => {
try {
console.log(b.FnB()); //returns 'mocked'
console.log(a.FnA()); //return error from FnB() execution ...
} catch (e) {
console.log(e);
}
});
Он заглушает метод FnB (), но только когда я вызывал его из экземпляра b-файла. Поэтому, когда я позвонил в FnA (), заглушка, кажется, ушла ...
Что мне не хватает?
Некоторая помощь будет очень признательна, спасибо :)
РЕДАКТИРОВАТЬ :
a.js пример:
const FnB = require('./FnB)
exports.FnA = data => {
const limit = data.releases.update ? 60 : 20;
return FnB(data.ref, limit)
};
b.js пример:
exports.FnB = (ref, page, query) => {
//API call
}
testFile.js пример:
const a = require('../a')
const b = require('../b')
beforeEach(() => {
this.FnBStub = sinon.stub(b, 'FnB').returns('mocked');
});
afterEach(() => this.FnBStub.restore());
it('should mocked FnB function', () => {
try {
console.log(b.FnB()); //returns 'mocked'
console.log(a.FnA()); //return error from FnB() execution ...
} catch (e) {
console.log(e);
}
});
Итак, как я уже сказал, я хотел бы заглушить этот вызывающий метод FnB и просто проверить, вызывается ли этот метод с правильными параметрами.