2016-07-02 10 views
0

in meinem Test-Ordner Ich habe zwei Dateien: eine API-Test (postAdduser.js) und eine andere der Winkelmesser (sendPush.js).Zugriff Variable von einer anderen Datei in JS

postAdduser.js

var assert = require('chai').assert, 
    request = require('supertest'), 
    util = require('/Users/rafael/Desktop/projects/my-project/tests/API/spec/util.js'), 
    expect = require('chai').expect; 

var storeId; 
var session = null; 
var rut; 

describe('Register valid user', function() { 

    before(function (done) { 
     request(util.url) 
      .post('/admin/login') 
      .send(util.adminLogin) 
      .end(function(err, res) { 
      if (err) return done(err); 
      session = res.header['set-cookie']; 
      done(); 
      }); 
    }); 

    this.timeout(60000); 
    it('Add valid user', function(done) { 
    request(util.url) 
     .post('/api/v1/users') 
     .set('Content-type', 'application/json') 
     .send(util.addValidUser) 
     .end(function(err, res) { 
     if (err) return done(err); 
     var results = res.body; 
     assert.equal(res.status, 200); 
     expect(results).to.include(util.addValidUser); 
     storeId = res.body._id; 
     rut = res.body.rut; 
     done(); 
     }); 
    }); 

sendPush.js

var HomePage = require('../pages/homePage.js'); 
var LoginPage = require('../pages/loginPage.js'); 
var Search = require ('../pages/searchPage.js'); 
var SendPush = require ('../pages/sendPush.js'); 
require('/Users/rafael/Desktop/projects/my-project/tests/UI/spec/postAddUser.js'); 


describe('Send notifications to RUT', function() { 

    before(function() { 
    describe('Register valid user', function() { 
     console.log(rut); 
    }); 
    HomePage.get(); 
    }); 

    it('should log in in admin', function() { 
    LoginPage.login(); 
    }); 

    it('search for valid RUT', function() { 
    Search.searchRut('73667143'); 
    }); 

    it('send push to RUT', function() { 
    SendPush.sendPush(); 
    }); 

    after(function() { 
    browser.quit(); 
    }); 
}); 

sehen, dass in der BEFORE (sendPush.js) Test ich die Variable RUT speichern möchten das wird auf Test verwendet postAddUser.js

Wie kann ich das tun?

prost, rafael

+0

Wofür steht RUT? Im Allgemeinen möchten Sie nicht, dass ein Test von einem anderen abhängig ist, daher könnte es sich um einen Code-Geruch handeln. – satyajit

+0

Da ich in meiner Anwendung keinen neuen Benutzer erstellen kann, muss ich diesen Benutzer über die API erstellen und die Routine in meinem Skript verwenden (UI-Test) – RFtests

+0

Gotcha. Siehe meine Antwort – satyajit

Antwort

0

A hacky Weg ist: eine globale Variable

GLOBAL.rut

machen Furche und es wird in allen Dateien gegeben, dass die API zur Verfügung Datei läuft zuerst.

Ich hatte ein ähnliches Problem und die Art der Einrichtung des Frameworks ist zunächst ich die Datei setup.js vor jeder Mocha-Datei aufrufen und in setup.js mache ich die globalen Deklarationen, die in einigen Dateien erforderlich sind.

Beachten Sie, dass dieser Ansatz hacky ist und nicht so gut skaliert, zum Beispiel wenn zwei Tests gleichzeitig ausgeführt werden und jeder Benutzer gleichzeitig erstellen/löschen möchte. Ein besserer Ansatz besteht darin, diese createUser-Methode in eine Funktion zu abstrahieren und sie vor jedem Block jedes Tests zu verwenden. Sie können einen AfterEach-Block haben, in dem Sie diesen Benutzer löschen können. Werfen Sie einen Blick auf Haken in https://mochajs.org/

+0

Aber in der Datei ** postAdduser.js ** Ich habe eine globale Variable, nein? 'var rut' – RFtests

+0

JS exportiert keine in der Datei deklarierten Variablen in eine andere. – satyajit

Verwandte Themen