单元测试因if语句失败-mocha / chai

时间:2019-06-05 10:09:25

标签: javascript unit-testing mocha tdd chai

我有一个简单的单元测试,它可以生成报告并发送数据。

有2个主要功能功能:  -生成报告并发送对象键/值的对象。  -运行上述功能的一种。 (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();
    };

谢谢!

0 个答案:

没有答案