2017-07-18 93 views
0

我試圖使用靜態方法以便在外部使用它。嘗試將其用作靜態方法時未定義方法

utils的文件:

'use strict' 
 
function utils(){} 
 
utils.staticMethod1 = function(){ 
 
alert("foo"); 
 
}; 
 
module.exports = utils();
主文件:

'use strict;' 
 
    let HomePage = require('../page/home_page.js'); 
 
let utilsPage = require('../utils/utils.js'); 
 
    describe("login to website",function(){ 
 
     let employeeId; 
 
     let employeeBday; 
 
     let home = new HomePage(); 
 
      
 
     beforeEach(function(){ 
 
      
 
      browser.driver.get("http://foo.com/");  
 
     }); 
 
     
 
      it("should succees picking a present",function(){ 
 
       utilsPage.staticMethod1(); 
 
     }); 
 
    });

但我不斷收到錯誤說:Failed: utils is not defined

+0

'this'在(假設)靜態方法沒有任何意義!此外,如果你;要使用stacksnippets來演示問題 - 確保它們能夠正常工作(即,做一些事情,不要錯誤) – Jamiec

+0

如何導入utils文件? –

+0

@YuryTarabanko - 對於這個問題我甚至不知道'utils'是如何導出的* – Jamiec

回答

1

你的頁面文件:

'use strict'; 

var Utils = function(){ 
    this.methodTest = function(){ 
     console.log("Something"); //alert(this); 
    }; 
}; 

module.exports = Utils; 

你的規格文件:

'use strict;' 

let Utils = require('../page/utils.Page.js'); 

describe("login to website",function(){ 
    let employeeId; 
    let employeeBday; 
    let utils = new Utils(); 

    beforeEach(function(){ 
     browser.driver.get("http://foo.com/");  
    }); 

    it("should success picking a present",function(){ 
     utils.methodTest(); 
     expect(browser.getTitle()).toEqual('SomethingToGetAnError'); 
    }); 

}); 

你應該偷看了一下關於量角器使用靜態方法,它們會使你粗糙的目的。

Explanation

Better explanation about Page Objects Pattern in testing

+0

一般來說,我確實使用頁面對象模式,但由於某些其他原因需要使用外部文件。 –

+0

如果您需要使用外部文件(例如信息)來對付表單,您應該像載入json文件一樣加載它進行測試。 F.Ex:'browser.params.users = require('./ shared.params。'+ countryCode +'.json')。用戶;' – Alf

+0

我使用了你的代碼,但得到一個錯誤。錯誤:TypeError:無法設置未定義的屬性'方法' –