У меня есть простой модульный тест, который генерирует отчет и отправляет данные.
И есть две основные функции функции:
- тот, который генерирует отчет и отправляет ключ / значения объекта.
- тот, который выполняет вышеуказанную функцию. (function init()
)
Однако в функции init () я только хочу, чтобы эта функция выполняла свое действие, if/else
она удовлетворяет определенному условию.
Этот код работает!
defineModule('GenerateReport', (require, module) => {
const service = require('Service');
function sendReport() {
const report = service.buildReport(xxx);
service.sendReport({
value1: value,
value2: 'value'
});
};
function init() {
const number = getInfo('number');
if (number >= 2) {
sendReport();
} else {
console.log('Report did not send');
}
};
module.exports = {
init
};
});
Однако мой модульный тест не пройден. Если я удалю оператор if / else, мой модульный тест пройдет.
Я не могу понять, как изменить модульный тест, чтобы он работал, пока включено условие if/else
.
Надеюсь, это имеет смысл. Вот так выглядит юнит-тест. Я включил только фрагменты describe
, так как я не думаю, что вам нужно видеть остальные:
describe('Should have certain number', () => {
it('should be more than no 1', () => {
// GIVEN
data = {
number: 2
};
//WHEN
SUT.init();
// THEN
expect(date.number >= 2)
});
}),
describe('Test to send report', () => {
it('should send the report with object data', () => {
// GIVEN
const testObject = {
value1: value,
value2: 'value'
};
// WHEN
SUT.init();
// THEN
expect(service.sendReport).to.have.been.calledWith(testObject);
});
});
Помните, это работает, если я полностью удаляю оператор if/else
из функции init()
. Так что, если это выглядело так:
function init() {
sendReport();
};
Спасибо!