2017-12-11 2 views
0

Ich schreibe einfachen Test in Jasmin-Rahmen. Ich habe folgende Dateien in einem Ordner gespeichert:Mit Klassen in verschiedenen .ts-Dateien in Jasmin

  • maintest.ts

  • helper.ts

  • Workflow1.ts

  • Workflow2.ts

Workflow-Dateien haben folgenden Inhalt (Beispiel):

import {element, by, browser, protractor} from "protractor"; 
import {Helper} from "../../helper"; 

export class Workflow1/2 
{ 
    static Foo1() { 

    let element1; 
    let element2; 

    describe('check all fields', function() { 
     it('check foobar', function() { 
       element1.isVisible(); 
     }); 
     it('check foobar2', function() { 
       element2.isVisible(); 
     }); 
    } 

    static Foo2() { 
    let element3; 
    let element4; 

    describe('check all fields', function() { 
     it('check foobar', function() { 
       element4.isVisible(); 
     }); 
     it('check foobar2', function() { 
       element3.isVisible(); 
     }); 
    } 
} 

Und die maintest.ts ist:

import {browser} from "protractor"; 
import {Helper} from "./helper"; 
import {Workflow1} from "./Workflow1"; 
import {Workflow2} from "./Workflow2"; 

describe ('Regression Tests', function() { 
    beforeAll(function() { 
     console.log('====================Start'); 
}); 

describe('Basic workflow', function() { 
    Workflow1.Foo1(); 
    Workflow1.Foo2(); 
    Workflow2.Foo2(); 
    Workflow2.Foo2(); 
}); 
}); 

aber wenn ich es laufen, hat nichts laufen richtig - ich bekomme diese Fehlermeldung:

Error: Error while waiting for Protractor to sync with the page: "window.angular is undefined. This could be either because this is a non-angular page or because your test involves client-side navigation, which can interfere with Protractor's bootstrapping. See http://git.io/v4gXM for details" 

aber wenn ich einen Kommentar:

//Workflow1.Foo2(); 
//Workflow2.Foo2(); 
//Workflow2.Foo2(); 

die Workflow1.Foo1 w Orks vollkommen in Ordnung.

Kann ich nicht verschiedene Methoden aus verschiedenen Dateien verwenden? Es funktioniert mit Helfer, wo ich mich anmelden und abmelden Methoden ...

+0

Versuchen Sie, Winkelmesser zu deaktivieren, um auf Winkel zu warten. Ihr Fehler ist darauf zurückzuführen, dass der Winkelmesser während der Wartezeit auf die Synchronisierung mit Angular Zeitlimit überschritten hat. – demouser123

+0

Wo? Ich habe 'browser.ignoreSynchronization = true;' in helper in der Login-Methode und auch irgendwo in maintest.ts (dh beforAll oder im Basic Workflow) – Michal

+1

Je nachdem, welche Version des Winkelmessers Sie verwenden, ist 'browser.ignoreSynchronization' veraltet. Der neue Befehl ist 'browser.waitForAngularEnabled (false)' – tehbeardedone

Antwort

0

Ich denke, ich habe das. Mein Code war ‚ziemlich‘ lange mit verschiedenen describe s, wenn ich es auf 2 minimalized, fing es an :)

EDIT arbeiten: Wie ich unten in Kommentar erwähnt, jede Methode in Workflow1 und Workflow2 Dateien haben muss mindestens ein describe und mindestens eine it innen - mit nur describe ohne it wirft Fehler

+1

Ich glaube nicht, dass das tatsächlich eine Lösung ist. Es gibt keine Beziehung, wie viele Beschreibungen ein Test haben kann. Ich habe Tests mit 15+ beschrieben und das läuft ganz gut. Die Fehlermeldung, die ausgelöst wurde, wurde oft erwähnt und vom Protractor-Team dahingehend geklärt, dass das Winkelmesser nicht mit Angular synchron ist. – demouser123

+0

@ demouser123 Sie haben Recht, aber später, als ich dieses Problem wiederfand, Ich habe herausgefunden, dass alle Methoden, die in maintest.ts (Worklow1 und Workflow2 in diesem Fall) verwendet werden, mindestens ein 'describe' mit mindestens einem' it' haben müssen - mit dem Befehl describe-throws-Fehlers bei der Synchronisation mit Angular – Michal

Verwandte Themen