2016-04-27 9 views
2

Ich benutze Winkelmesser Jasmin für e2e Test einer eckigen einzelnen Seite Anwendung. Betrachten Sie das folgende Code-Snippet.Wie man Testspezifikationen bedingt ausführt - Winkelmesser Jasmine

describe('Search', function(){ 
    it('Should Open the search modal popup', function() { 
    //code 
    expect(modalOpened).toBe(true) 
    }) 

    it('Search should return results', function(){ 

    }) 
    it('Search should not return results', function() { 

    }) 
}) 

In dem über dem Beispiel, wenn Should Open the search modal popup dann auch scheitern Spezifikationen unter Should Open the search modal popup und Should Open the search modal popup schlägt fehl, da die modale selbst nicht geöffnet ist. Es macht also keinen Sinn, die folgenden Spezifikationen auszuführen. Kann ich die letzten beiden Spezifikationen bedingt ausführen? Nur wenn die erste Spezifikation überschritten wurde, sollten die folgenden Spezifikationen ausgeführt werden.

Antwort

1

Es sieht so aus, als ob Sie Komponententests und E2E-Tests durcheinander bringen. Protractor, eine Teilmenge von Selenium, ist nur für die Durchführung von Integrations- oder End-to-End-Tests vorgesehen. Jede E2E-Spezifikation sollte Ihre Code-Einheiten zusammen integrieren (daher Integrationstests) und testen, dass der von Ihnen gewählte Browser die Ausführung jeder Funktionalität zulässt (z. B. Klick-Suche und Modal-Shows mit Ergebnissen). Außerdem würden Sie NICHT nach einer Eigenschaft von modalOpened suchen, um wahr zu sein. Sie würden prüfen, ob das Modal in css vorhanden ist, nach className oder anderen, zusammen mit Ihren Ergebnissen.

Zum Glück bietet Winkelmesser asynch Promise-basierte Ereignisse. Wenn Sie auf Ihrem Suchsymbol klicken, können Sie dies tun:

it('Should Open the search modal popup and show results', function() { 

    element(by.id('search')).click().then(
     function() { 
      // now check for modal to be displayed 

      // now check results are displayed 
     } 
    ); 
}); 

Quellen:

https://angular.github.io/protractor/#/api?view=webdriver.WebElement.prototype.click

https://angular.github.io/protractor/#/api?view=ElementFinder.prototype.then

+0

Prüfung, ob ein modale sichtbar nicht der Teil der e2e-Tests ist? – Wishnu

+0

'Sie würden NICHT nach einer Eigenschaft von modalOpened suchen, um wahr zu sein '---- Eigentlich ist' modalOpened' nur eine Javascript-Variable, die zu 'element (by.css (' xx '))' – Wishnu

+0

Ihre Tests sind Testfunktionen nicht wie diese Funktionalität implementiert ist. Wenn Sie sich entscheiden, Ihre Modal-Bibliothek zu tauschen, funktionieren Ihre Tests weiterhin, wenn Sie Ihre CSS- statt die JS-Variable testen. Wie Sie den Test implementieren, ist jedoch nicht so wichtig, um sicherzustellen, dass Sie ihn implementieren. Solange Sie der Protractor-Syntax folgen und die Modal-Shows tatsächlich testen, wenn Sie erwartet werden, sind Sie Gold. – colincclark