2

現在、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 回記述する必要があります)。

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 に答える