我正在碰壁,弄清楚为什么我的测试没有通过,因为我正在学习如何使用Mocha / Chai进行测试。任何帮助将不胜感激!
虽然我从其他多篇帖子中读到这可能掩盖了真正的错误,但我的控制台却给我发了以下错误:
错误:在Test.Runnable [作为构造函数]
多次调用done()
Mocha为我的每个测试用例抛出了这个错误:
AssertionError:期望''等于'JCB' 在上下文。 (detectNetwork.test.js:253:65)
与此特定代码行相关联:
detectNetwork(prefix4[i] + '1'.repeat(len[j]-4)).should.equal('JCB')
然而,当控制台独立登录时,测试会通过并进行24次测试。
这是功能:
var detectNetwork = function(cardNumber) {
var cardBrand = '';
var prefix1 = cardNumber.substring(0,1);
var prefix2 = cardNumber.substring(0,2);
var prefix3 = cardNumber.substring(0,3);
var prefix4 = cardNumber.substring(0,4);
var prefix6 = cardNumber.substring(0,6);
if (prefix4 === '4903' || prefix4 === '4905' || prefix4 === '4911' || prefix4 === '4936' || prefix6 === '564182' || prefix6 === '633110' || prefix4 === '6333' || prefix4 === '6759') {
if (cardNumber.length === 16 || cardNumber.length === 18 || cardNumber.length === 19) {
cardBrand = 'JCB';
}
}
return cardBrand;
};
这是摩卡的Chai测试:
describe('JCB', function() {
var should = chai.should();
var prefix4 = ['4903', '4905', '4911', '4936', '6333', '6759'];
var prefix6 = ['564182', '633110'];
var len = [16, 18, 19];
for (var i = 0; i < prefix4.length; i++) {
for (var j = 0; j < len.length; j++) {
it('has a prefix ' + prefix4[i] + ' and a length of ' + len[j], function() {
detectNetwork(prefix4[i] + '1'.repeat(len[j]-4)).should.equal('JCB');
});
}
}
for (var i = 0; i < prefix6.length; i++) {
for (var j = 0; j < len.length; j++) {
it('has a prefix ' + prefix6[i] + ' and a length of ' + len[j], function() {
detectNetwork(prefix6[i] + '1'.repeat(len[j]-6)).should.equal('JCB');
});
}
}
});