2016-07-02 3 views
0

두 개의 파일 : api 테스트 (postAdduser.js)와 또 다른 각도기 (sendPush.js)가 있습니다.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(); 
    }); 
}); 

은에 테스트 (sendPush.js) 전에 내가 변수 RUT을 저장할 것을 볼 테스트에 사용 중임 postAddUser.js

어떻게하면됩니까?

환호, 라파엘

+0

RUT는 무엇을 나타 냅니까? 일반적으로 하나의 테스트가 다른 테스트에 종속되지 않도록하기 때문에 이것은 코드 냄새 일 수 있습니다. – satyajit

+0

내 응용 프로그램에서는 새 사용자를 만들 수 없으므로 API를 통해이 사용자를 만들고 스크립트 (ui 테스트) – RFtests

+0

Gotcha에서 틀림없이 사용해야합니다. 내 대답을 참조하십시오 – satyajit

답변

0

해키 방법은 다음과 같습니다

전역 변수

GLOBAL.rut을 틀에 박힌 생활을하고는 API 주어진 모든 파일에서 사용할 수 있습니다 파일이 먼저 실행됩니다.

나는 비슷한 문제가 있었고 프레임 워크 설정 방법은 먼저 각 모카 파일과 setup.js 앞에 setup.js 파일을 호출합니다. 일부 파일에는 필요한 전역 선언을 수행합니다.

이 접근법은 해킹이며, 동시에 두 개의 테스트가 동시에 실행되고 각각이 동시에 사용자를 생성/삭제하려는 경우와 같이 너무 잘 확장되지 않습니다. 이 createUser 메소드를 함수로 추상화하고 각 테스트의 beforeEach 블록을 사용하는 것이 더 나은 접근법입니다. 해당 사용자를 삭제할 수있는 afterEach 블록을 만들 수 있습니다. 후크를 살펴보십시오 https://mochajs.org/

+0

하지만 파일 ** postAdduser.js ** 나는 전역 변수를 가지고 있습니까? 'var rut' – RFtests

+0

JS는 파일에서 선언 된 변수를 다른 것으로 내 보내지 않습니다. – satyajit

관련 문제