现在正在学习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函数的前缀中,但仍然无法正常工作
我认为您正在寻找这样的东西:
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])
};
}
});