2016-07-02 22 views
0
私のテストフォルダ内の

私はapiテスト(postAdduser.js)と別の分度器(sendPush.js)の2つのファイルを持っています。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とは何ですか?一般に、1つのテストが別のテストに依存しないようにするため、これはコードの匂いになる可能性があります。 – satyajit

+0

私のアプリケーションでは新規ユーザーを作成できないので、APIを使用してこのユーザーを作成し、スクリプト(ui testing) – RFtests

+0

Gotchaで間違いを使用する必要があります。私の答えを参照してください – satyajit

答えて

0

ハックの方法がある:マンネリグローバル変数

GLOBAL.rut

を作り、それがAPIことを考えると、すべてのファイルで利用できるようになりますファイルが最初に実行されます。

私は同様の問題があり、フレームワークをセットアップする方法は、まず各mochaファイルの前にsetup.jsファイルを呼び出し、setup.jsでいくつかのファイルで必要なグローバル宣言を行います。

このアプローチはハッキーであり、例えば2つのテストが同時に実行されており、それぞれが同時にユーザーを作成/削除したいとしている場合など、スケーラビリティはあまり良くありません。より良いアプローチは、このcreateUserメソッドを関数に抽象化し、各テストのbeforeEachブロックを使用することです。あなたはそのユーザーを削除することができるafterEachブロックを持つことができます。フックを見てくださいhttps://mochajs.org/

+0

しかし、ファイル** postAdduser.js **私はグローバル変数を持っている、いいえ? 'var rut' – RFtests

+0

JSは、ファイル内で宣言された変数を別のものにエクスポートしません。 – satyajit

関連する問題