微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

tdd – 如何重复/循环mocha测试

我一直在做一些mocha / chai测试,除了在每个’it’测试中放置一个循环并迭代一次和一次之外,我还没有找到一种很好的方法来运行我的测试而不是许多不同的可能性.问题是,如果我有数十或数百个测试,我不想一遍又一遍地写相同的for循环.

这样做有更优雅的方式吗?特别是一个用不同的测试参数一次遍历所有测试的?

describe('As a dealer,I determine how many cards have been dealt from the deck based on',function(){

  console.log(this);

  beforeEach(function(){
    var deck = new Deck();
    var myDeck = deck.getCards();
  });


    it('the number of cards are left in the deck',function(){
      for(var i = 1; i<=52; i++){
        myDeck.dealCard();
        expect(myDeck.countDeck()).to.equal(52-i);
      }
    });

    it('the number of cards dealt from the deck',function(){
      expect(myDeck.countDealt()).to.equal(i);
    });

    it('the sum of the cards dealt and the cards left in the deck',function(){
      expect(myDeck.countDeck() + myDeck.countDealt()).to.equal(52)
    });

});
我在 Loop Mocha tests?实现了neezer的解决方案,它涉及将整个测试放入一个闭包并用循环执行它.

请注意,循环在函数中使用beforeEach(),因为它每次测试执行52次.如果这些元素是动态的,并且每个循环不会执行多次,那么将元素放在beforeEach()函数中并不是一个好主意.

代码看起来像这样,它似乎工作.

var myDeck = new Deck(Card);

function _Fn(val){

    describe('As a dealer,function(){

      myDeck.dealCard();

      var cardCount = 0;
      var dealtCount = 0;

      cardCount = myDeck.countDeck();
      dealtCount = myDeck.countDealt();

      it('the number of cards are left in the deck',function(){
        expect(cardCount).to.equal(52-val);
      });

      it('the number of cards dealt from the deck',function(){
        expect(dealtCount).to.equal(val);
      });

      it('the sum of the cards dealt and the cards left in the deck',function(){
        expect(cardCount + dealtCount).to.equal(52);
      });

    });

}

for(var i = 1; i<=52; i++){
  _Fn(i);
}

原文地址:https://www.jb51.cc/javaschema/281671.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐