在Mocha / Chai上测试JS的40种以上组合

问题描述 投票:0回答:1

现在正在学习JS的Mocha + Chai,对于如何测试这段代码我有些困惑:

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之间的每个长度编写所有测试用例。有没有一种方法可以通过将前缀字符串增加等于的元素数来添加到前缀字符串中长度?

我尝试过将for循环与12-19之间的其他int数组放在一起,并将其添加到test函数的前缀中,但仍然无法正常工作

javascript mocha chai assert
1个回答
0
投票

我认为您正在寻找这样的东西:

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])
      };
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.