2014-03-12 16 views
2

我想包括在量角器測試用例的模塊/庫,但是,只要我添加行包括在量角器測試用例庫

var lib = require('./loginactions.js'); 

所有引用量角器和相關對象都將丟失。換句話說,如果我沒有require行,找到'量角器'和'瀏覽器'變量並且測試運行正常(使用文件中的函數),但是在添加該行之後,變量不再被找到。

這裏是一個最小的測試用例:

var lib = require('./loginactions.js'); //problematic line 
describe('Login/Logout to Application',function(){ 
    var ptor; 

    beforeEach(function(){ 
     ptor = protractor.getInstance(); //protractor reference lost 
     browser.get('http://localhost:80'); //browser reference lost 
    }); 

    it('should login and then logout successfully', function(){ 
     //Do things here 
     lib.login(user, pass, ptor); 
    }); 
}); 

我導出功能,以這樣的方式

module.exports.Login = Login; 
module.exports.Logout = Logout; 

//Params: ptor - protractor instance 
function Login(user, pass, ptor) 
{ 
    //stuff 
} 

function Logout(ptor) 
{ 
    //stuff 
} 

我也納悶,難道這甚至包括自己的庫到的正確方法項目。所以我的問題是,如何正確地將庫包含到量角器測試用例中?

+0

是./loginactions.js與您的測試文件在同一個目錄中? –

+0

是的,它在同一個目錄中。 – Esch

+0

不應該忽略'.js'擴展名:'var lib = require('./loginactions');'?它應該沒有工作。 – glepretre

回答

0

爲了回答我自己的問題,使用量角器作爲庫方法工作,這種方式對量角器的引用被恢復。所以加入這兩個需要解決我的問題:

var protractor = require('/path/to/protractor'); 
require('/path/to/protractor/jasminewd'); 

所以我的測試中看起來類似於更新的代碼中 'no method expect' when using Protractor as a library問題。

但是,我並不完全確定全局瀏覽器對象。它是根據http://www.ng-newsletter.com/posts/practical-protractor.html圍繞WebDriver對象的包裝,但量角器實例也是如此。所以我決定用'ptor'替換所有'瀏覽器'變量,至今沒有投訴。這可能會適得其反,但正如我所說的,我並不完全確定是否與全局量角器對象一起創建的全局瀏覽器對象,正常運行量角器而不是庫。