如何使用基于配置文件的if else语句编写代码的单元测试

时间:2019-06-18 17:09:12

标签: node.js unit-testing codecov

我具有如下功能:

const config = require('../config')
getLabel (objectList) {
  if (config.labeling.currentVersion === 'v1') {
    // Do something on objectList
    return true
  }
  if (config.labeling.currentVersion === 'v2') {
    // Do something on objectList
    return false
  }
}

,并希望为其编写测试。我是node.js的新手,不知道如何编写测试以使其涵盖上述示例中的两个if语句,因为该功能需要配置文件中的某些参数固定。有没有办法传递该配置?我完全不知道如何解决这个问题,因此,对此的任何帮助或引导都将不胜感激。我不得不提到,现在我的配置文件中currentVersion设置为v1,我所拥有的测试内容如下所示,codecov建议第二个if语句不包含在此内容中测试(daah):

const labeler = require('../../src/lib/labeler')
describe('Labeling Unit Testing', () => {
  it('should get the label', () => {
    let label1 = labeler.getLabel([1, 2, 3])
    let label2 = labeler.getLabel([1, 2, 3])
    return assert.equal(label1, label2)
  })

1 个答案:

答案 0 :(得分:1)

有几种不同的方法可以完成此操作。较简单的方法之一是删除对配置的直接依赖关系,并允许您换出要使用的版本。您可以通过稍微更改签名以采用另一个使用配置的默认参数来实现此目的:

getLabel(objectList, currentVersion = config.labeling.currentVersion) {
  if (currentVersion === 'v1') {
    // Do something on objectList
    return true
  }
  if (currentVersion === 'v2') {
    // Do something on objectList
    return false
  }
}

这为您提供了所需的灵活性,同时又不强迫其他人关注指定版本。