2016-05-12 137 views
0

我得到「類型錯誤使用類時:下拉不嘗試做以下的某一功能:獲得「類型錯誤:下拉是不是一個函數」試圖量角器

/* 
* Dropdown.js 
*/ 

var __container; 

function Dropdown(el) { 
    __container = el; 
} 

Dropdown.prototype = { 
    constructor: Dropdown, 

    getOptions: function() { return __container.element.all(by.css('option')); }, 

    // my other prototype methods 
} 

-

/* 
* PageObject.js 
*/ 

var Dropdown = require('Dropdown'); 

var PageObject() {} 

PageObject.prototype = { 
    constructor: PageObject, 

    myDd: new Dropdown(element(by.css('select')), 

    //my other prototype methods which do work 
}; 

-

/* 
* spec.js 
*/ 

var PageObject = require('PageObject'); 

describe('Test my page', function() { 
    it('should test the dropdown', function() { 
     browser.get(mypage); 
     var pageObject = new PageObject(); 
     expect(pageObject.myDd.getOptions().isPresent()).toBe(true); 
    }); 
}); 
+0

在哪一行發生錯誤?我想'myDd:new Dropdown(element(by.css('select')),'但也許你可以添加這個潛在的重要信息。 – 11684

+0

你是如何導出Dropdown的?換句話說,需要'知道在哪裏可以找到它?不應該用'define'或'exports'做些什麼嗎?你只是使用RequireJS嗎?是否需要你使用另一個框架或庫的一部分?其中? – 11684

回答

1

爲@ 11684提到的 - 你忘了導出下拉列表和PageObject類和require('Dropdown');返回未定義。量角器運行在node.js上,因此您需要填補CommonJS模塊的空白。此外,如果你想要求其不與NPM安裝的模塊你有他們使用相對路徑等等,而不是

var PageObject = require('PageObject'); 

你需要做的是這樣

var PageObject = require('./pages/PageObject'); 
var Dropdown = require('../helpers/Dropdown'); 

目標

並使用commonJS模塊在節點環境中導出模塊,您需要將它們導出爲導出對象上設置的一組屬性/方法,或者可以將構造函數直接指定給它,以便直接在所需模塊上提供它

// in Dropdown 
module.exports = Dropdown; 

// in PageObject 
module.exports = PageObject; 

如果您打算使用更多的Node.js在您的測試,你應該多讀一些有關與CommonJS的模塊https://nodejs.org/docs/latest/api/modules.html工作和node.js的本身一般。將推薦檢查什麼從ES6你已經可以使用http://node.green/讓你的測試更有組織和可讀性

+0

/我劉海的頭靠在牆上,當然我沒有做... ...是的,我做了,我爲PageObject做了它,但忘記了Dropdown,謝謝其他信息,我會檢查出來。 – Machtyn

+0

Cheers Machtyn , 很高興有幫助。 –

相關問題