我有一个简单的单元测试,它可以生成报告并发送数据。
有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();
};
谢谢!