2014-05-10 1 views
3

J'écris un test de bout en bout en utilisant Jasmine pour AngularJS. J'utilise Protractor pour faire le test. Je le balisage suivantTest pour le nombre d'éléments utilisant Jasmine dans AngularJS

<ul class="phone-thumbs"> 
    <li ng-repeat="img in phone.images"> 
    <img ng-src="{{img}}"> 
    </li> 
</ul> 

Et je veux vérifier que pour une instance de page particulière, j'ai quatre de ces images. Voici ce que j'ai jusqu'à présent

describe('Phone detail view', function() { 

    beforeEach(function() { 
     browser.get('app/index.html#/phones/nexus-s'); 
    }); 

    it('should display four thumbnails on the nexus-s page', function() { 
     expect(element(by.css('.phone-thumbs li img')).length()).toBe(4); 
    }); 
    }); 

problème est que je reçois une erreur disant

TypeError: Object #<Object> has no method 'length' 

Où vais-je tort?

Répondre

9

Cette question fait partie de la section expériences dans tutorial 8 du tutoriel AngularJS.

Voici comment je l'ai résolu. J'ai pris la route différente de compter les images rendues plutôt que de tester directement le répéteur/modèle.

it('should display four thumbnails of the nexus-s', function() { 
    var imgsCount = element.all(by.css('.phone-thumbs li img')).count(); 
    expect(imgsCount).toBe(4); 
}); 
3

Pour tous ceux qui ont besoin de le savoir. Voici comment je l'ai fait.

it('should display four thumbnails on the nexus-s page', function() { 
     var images = element.all(by.repeater('img in phone.images')).count(); 
     expect(images).toBe(4); 
    }); 
Questions connexes