2016-04-19 16 views
2

Ich möchte chai.js Assertion BDD-Bibliothek mit Nightwatch.js verwenden.Ist es eine Möglichkeit, chai.js in Nightwatch verketten

Es funktioniert! Mein Code sieht so aus:

var expect = require('chai').expect 

module.exports = { 
    'Login' : function (browser) { 
    var login = browser.page.login() 
    login.expect.element('@login').to.not.be.enabled 
    login.setValue('@email', '[email protected]') 
    login.setValue('@password', 'pass') 
    login.expect.element('@login').to.be.enabled 
    login.click('@login') 
    login.end() 
    } 
} 

ABER. Nightwatch bietet eine sehr flüssige Oberfläche für eigene Methoden, mit denen Sie Methoden wie browser.setValue('...', '...').click('...').end() ketten können.

Die Frage: Kann ich Verkettung von Methoden erreichen, wenn ich Chaijs verwende?

Erklärung, was ich will:

module.exports = { 
    'Login' : function (browser) { 
    var login = browser.page.login() 

    login.expect.element('@login').to.not.be.enabled 
    .setValue('@email', '[email protected]') 
    .setValue('@password', 'pass') 
    .expect.element('@login').to.be.enabled 
    .click('@login') 
    .end() 
    } 
} 

Kann ich meine Tests sieht aus wie Code oben?

Antwort

3

Um mehr erwartet zu verwenden Sie, dies zu tun haben:

module.exports = { 
'Login' : function (browser) { 
    var login = browser.page.login() 

    login.expect.element('@login').to.not.be.enabled 
    login 
     .setValue('@email', '[email protected]') 
     .setValue('@password', 'pass') 
     .expect.element('@login').to.be.enabled 
    login  
     .click('@login') 
    .end() 
    } 
} 

Dies geschieht, wenn Sie .expect (...) verwenden in Ihrem Test oder in benutzerdefinierten Funktionen innerhalb der Seite Objekts, Sie haben Verwenden Sie das Browser/Client/Seitenobjekt var erneut, um erneut zu verketten.