Тестирование 40+ комбинаций на мокко / чай на JS - PullRequest
0 голосов
/ 01 марта 2020

Изучение Mocha + Chai для JS прямо сейчас, и я немного озадачен тем, как проверить этот бит кода:

for (var j = 12; j <= 19; j++) {
    if (cardNumber.length === j) {
        if (cardNumber.slice(0, 4) === '5018') {
            return 'Maestro';
        } else if (cardNumber.slice(0, 4) === '5020') {
            return 'Maestro';
        } else if (cardNumber.slice(0, 4) === '5038') {
            return 'Maestro';
        } else if (cardNumber.slice(0, 4) === '6304') {
            return 'Maestro';
        }
    }
}

Я тестирую, чтобы увидеть, является ли входная строка, которая является ли номер карты удовлетворяющим любому из условий ниже с указанием первых 4 элементов, и длина карты должна быть между 12 и 19.

describe('Maestro', function() {
  // Write full test coverage for the Maestro card
  var should = chai.should();

  for (var length = 12; length <= 19; length++) {
    (function(length) {
      it ('has a prefix of 5018 and a length of ' + length, function() {
        detectNetwork('5018' + ???).should.equal('Maestro');
      });
    })(length)
  };
});

Я не хочу писать все контрольные примеры для каждого из 4 префиксов + каждая длина от 12 до 19. Можно ли как-нибудь добавить строку префикса, увеличив ее на количество элементов, равное длине?

У меня есть попытался поместить для l oop с массивом дополнительных целых чисел от 12-19 и добавить его к префиксу в тестовой функции, но он все еще не работает

1 Ответ

0 голосов
/ 01 марта 2020

Я думаю, вы ищете что-то вроде этого:

describe('Maestro', function() {
  // Write full test coverage for the Maestro card
  var should = chai.should();
  var prefixes = ['5018', '5020', '5038', '6304'];
  for(var p=0; p<prefixes.length;p++) {
      for (var length = 12; length <= 19; length++) {
        (function(length, prefix) {
          it ('has a prefix of ' + prefix + ' and a length of ' + length, function() {
            var longString = 'abcdefghijklmnopqrstuvwxyz';
            var testString = prefix + longString.slice(0, length-prefix.length);
            detectNetwork(testString).should.equal('Maestro');
          });
        })(length, prefixes[p])
      };
  }
});
...