2

我目前正在 Jasmine 中编写一个测试,使用 Karma 作为 JS 运行器。“描述”中是否可以有多个“它”,如下所示:

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);

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

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

4

2 回答 2

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);
    });
  });
});
于 2013-04-15T01:34:35.267 回答
0

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

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

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

应该:

 expect(scope.phones.length).toBe(**3**);
于 2016-12-02T21:08:53.200 回答