2017-01-18 3 views
0

J'essaie d'organiser mon code pour utiliser Page Objects Pattern, donc je crée un module avec une méthode dans laquelle je peux encapsuler l'interaction de la page.Comment appeler une méthode dans la fonction d'évaluation de NightmareJs?

Je suis en train de tourner ceci:

it('my test step', (done) => { 
     nightmare 
      .wait() 
      .evaluate(() => { 
       return { 
        myname: document.querySelector('document-myname').innerHTML}; 
      }) 
      .then(({myname}) => { 
       expect(myname).toEqual(`Jorge`); 
      }) 
      .then(done, done.fail); 
    }); 

Dans ceci:

var page = require('../util/ui/mypage'); 

it('my test step', (done) => { 
     nightmare 
      .wait() 
      .evaluate(() => { 
       return { 
        myname: page.getMyName()}; 
      }) 
      .then(({myname}) => { 
       expect(myname).toEqual(`Jorge`); 
      }) 
      .then(done, done.fail); 
    }); 

mypage.js

function getMyName() { 
     return myname: document.querySelector('document-myname').innerHTML; 
} 


module.exports = { 
    getName: getName, 
}; 

Ce qui se passe est que je reçois

- Failed: page is not defined 
+0

est la page variable dans votre portée globale? – Roljhon

+0

Oui, j'ai utilisé 'use strict'; sur le dessus du fichier –

Répondre

0

Vous devez transmettre la variable page comme second paramètre dans le rappel de la méthode d'évaluation, comme décrit dans le docs. En effet, évaluer la méthode de rappel a une portée isolée si Node.js variables ne sont pas directement:

var page = require('../util/ui/mypage'); 

it('my test step', (done) => { 
     nightmare 
      .wait() 
      .evaluate((page) => { 
       return { 
        myname: page.getMyName()}; 
      }, page) 
      .then(({myname}) => { 
       expect(myname).toEqual(`Jorge`); 
      }) 
      .then(done, done.fail); 
    }); 
+0

Cela fonctionne mais maintenant je reçois "- Attendu indéfini pour égaler" Jorge " ". D'une certaine manière, il ne renvoie pas la valeur attendue –

+0

'page' renvoie comme non défini –

+0

Je vois que votre module a 'getMyName' et vous exportez' getName'. – jstice4all