2016-11-24 6 views
1

Ich bin neu mit Winkelmesser und Jasmin-Rahmen, um eine AngularJS-Anwendung zu testen.Geteilt Verhalten Jasmin + Winkelmesser

Ich möchte einige meiner Szenarien wiederverwenden, wie die Login-Funktion in allen Szenarien meiner Suite aufrufen kann. Das ist mein login_test.js

module.exports = function(testName, testFn) { 
 

 
    const loginPage = pages.login; 
 
    const mainPage = pages.main; 
 
    var protractor; 
 
    describe('common Login suite', function() { 
 
    browser.ignoreSynchronization = true; 
 

 
    beforeEach(function() { 
 

 
    }); 
 

 
    afterAll(function() { 
 
     browser.manage().deleteAllCookies(); 
 
    }); 
 

 
    it(testName, function() { 
 
     browser.get('http://localhost:9000/'); 
 
     loginPage.typeUserName('bxxxxx'); 
 
     loginPage.typePassword('xxxxxx'); 
 
     loginPage.clickLogin(); 
 
    }); 
 
    }); 
 

 
}

Und hier habe ich die remote_terminal Funktion haben, hier muss ich Login-Funktion aufrufen Login in meinem Szenario perfom.

var loginSuite = require('./login_test.js'); 
 

 
loginSuite('login Suite terminal feature', function(browser) { 
 
    describe('description', function() { 
 
    console.log('describe'); 
 
    it('it', function() { 
 
     console.log('it'); 
 
    }); 
 
    }); 
 
});

Aber wenn diese spec (remote_terminal) aufgerufen Ich habe

Spec begann Schritte auf meiner Konsole Diese Nachricht auszuführen. gemeinsame Login-Suite ✓ Login Suite Terminal Funktion

Wie Sie sehen können, die Beschreibung und IT in der remote_terminal spec nicht ausgeführt werden.

Demo: http://pavelbogomolenko.github.io/dry-principles-with-protractor.html

Antwort

0

Sie pageObjects verwenden können, wieder verwendbaren Code accross Ihren Test zu erreichen,

Lassen Sie uns für Login-Seite als login_page.js wie unten,

var login_page = function(){ 
    this.performLogin = function(){ 
    //add code for performing login operation. 
    } 
} 
module.exports = new login_page(); 

eine neue js-Datei erstellen Jetzt können Sie die login_page.js in allen 'Spezifikationen' importieren und können die performLogin() Methode wann immer erforderlich aufrufen.

Blick auf das Beispiel spec.js unten,

describe("Test pageobject code",function(){ 
    var login_page = require("login_page.js"); 

    beforeAll(function(){ 
    login_page.performLogin(); 
    }) 

    it("simple test to perform after login action is performed",function() 
    //do whatever you want to test 
    }) 
}) 
Verwandte Themen