写茉莉花测试(BDD)时“描述”中的多个“it”

时间:2013-04-15 00:54:36

标签: angularjs jasmine karma-runner

我目前正在使用Karma作为JS跑步者在Jasmine中编写测试。在下面的“描述”中可以有多个“它”:

describe('PhoneCat controllers', function() {

  describe('PhoneListCtrl', function(){

    it('should create "phones" model with 3 phones', function() {
      var scope = {},
          ctrl = new PhoneListCtrl(scope);

      expect(scope.phones.length).toBe(2);

    it('should create "greetings" models with 3 greeting', funciton(){
      var scope = {},
        ctrl = new PhoneListCtrl(scope);

      expect(scope.greetings.length).toBe(3);

    });
    });
  });
});

它目前失败了,但你如何编写一个没有多余的测试(在这种情况下,必须描述同一个控制器,两次)?

2 个答案:

答案 0 :(得分:3)

使用beforeEach功能创建常用设置。它可以在任何级别添加。

describe('PhoneCat controllers', function() {
  describe('PhoneListCtrl', function(){
    beforeEach(function() {
      this.scope = {};
      this.ctrl = new PhoneListCtrl(scope);
    });

    it('should create "phones" model with 3 phones', function() {
      expect(this.scope.phones.length).toBe(2);
    });

    it('should create "greetings" models with 3 greeting', funciton(){
      expect(this.scope.greetings.length).toBe(3);
    });
  });
});

答案 1 :(得分:0)

我知道这个问题很古老,但是OP说这个测试失败了。

无论是否需要ForEach(),都可能是因为:

 expect(scope.phones.length).toBe(2);

应该是:

 expect(scope.phones.length).toBe(**3**);