Как проверить условное выражение в мокко / синоне - PullRequest
1 голос
/ 10 июня 2019

У меня есть такая функция:

abc(prop) {
      const x = aComplexFunction(this.productData, 'productStatus');
      let result;

      /* istanbul-ignore-next */
      if (x) {
        const key = (x[prop]) ? 'enabled' : 'notEnabled';

        result = `wayOfLife.${key}`;
      }

      return result;
    },

Мое покрытие говорит, что включенная часть не покрыта. Как это исправить

1 Ответ

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

Чтобы покрыть случай 'enabled', вам просто нужен тестовый случай, в котором x[prop] является правдивым.

Простой способ сделать это - использовать что-то вроде 'toString', поскольку toString существует накаждый объект в виде функции и функций Object.prototype.toString оценивается как истинный.

Вот несколько упрощенный рабочий пример для демонстрации:

const expect = require('chai').expect;

const aComplexFunction = () => ({});

function abc(prop) {
  const x = aComplexFunction();
  let result;

  if (x) {
    const key = (x[prop]) ? 'enabled' : 'notEnabled';
    result = `wayOfLife.${key}`;
  }

  return result;
};

it('will cover the enabled case', function() {
  expect(abc('propThatDoesNotExist')).to.equal('wayOfLife.notEnabled');  // <= covers notEnabled
  expect(abc('toString')).to.equal('wayOfLife.enabled');  // <= covers enabled
});
...