2017-07-14 54 views
1

這是我想建立我的第一個頁面對象使用WebdriverIOJS:類擴展值不是一個函數或空

登錄測試,但我得到的錯誤ERROR: Class extends value #<Page> is not a function or null上的login.page.js 3線。

我看不到,我在做什麼錯...是否有任何路徑或文件名錯誤?

/tests/specs/login.specs.js

var expect = require('chai').expect 
var LoginPage = require('../pageobjects/login.page') 

describe('login form', function() { 
    it('should deny access with wrong creds', function() { 
    LoginPage.open() 
    LoginPage.username.setValue('foo') 
    LoginPage.password.setValue('bar') 
    LoginPage.submit() 
    expect(LoginPage.flash.getText()).to.contain('Your username is invalid!') 
    }) 
}) 

/測試/ pageobjects /頁

'use strict' 
class Page { 
    constructor() { 
    this.title = 'My Page' 
    } 
    open(path) { 
    browser.url('/' + path) 
    } 
} 
module.exports = new Page() 

/tests/pageobjects/login.page.js

'use strict' 
var Page = require('./page') 
class LoginPage extends Page { 
    get username() { return browser.element('#username') } 
    get password() { return browser.element('#password') } 
    get form() { return browser.element('#login') } 
    get flash() { return browser.element('#flash') } 

    open() { 
    super.open('login') 
    } 

    submit() { 
    this.form.submitForm() 
    } 
} 
module.exports = new LoginPage() 
+0

要導出一個類的實例,而不是類本身 – Gerardo

+0

我不明白這一點... – user3142695

+1

試試'module.exports = Page' – Gerardo

回答

0

正如傑勒德指出,your're導出類的一個實例,並注意類本身。試試這些變化:

/測試/ pageobjects /頁

module.exports = Page; 

/tests/pageobjects/login.page.js

module.exports = LoginPage; 

/測試/規格/登錄。 specs.js

var LoginPage = new (require('../pageobjects/login.page'))(); 

var LoginPage = require('../pageobjects/login.page'); 
var instanceLoginPage = new LoginPage(); 
0

嘗試

module.exports.Page = Page 

然後在login.page

var Page = require('./page.js').Page 
相關問題