测试Mocha / Chai误导性错误

时间:2017-01-15 22:39:57

标签: javascript testing tdd mocha chai

我正在碰壁,弄清楚为什么我的测试没有通过,因为我正在学习如何使用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');
      });

    }
  }

});

0 个答案:

没有答案