Как написать модульный тест для кода с помощью операторов if else на основе файлов конфигурации - PullRequest
0 голосов
/ 18 июня 2019

У меня есть функция, подобная следующей:

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 не охватывается этим тестом (да) :

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 Ответ

1 голос
/ 18 июня 2019

Есть несколько разных способов сделать это.Один из самых простых - убрать эту прямую зависимость от конфигурации и позволить вам поменять, какой будет версия.Вы можете сделать это, слегка изменив сигнатуру, чтобы использовать другой параметр со значением по умолчанию, которое использует конфигурацию:

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

Это обеспечивает гибкость, которую вы ищете, не заставляя других беспокоиться об указании версии..

...