2016-11-18 19 views
0

我有3個文件,即conf.js,actionwords.js,project_test.js。 Actionwords.js和project_test.js是hiptest工具生成的文件。所以我需要使用這個結構來自動化測試用例。當我運行cmd時,出現錯誤。如何在量角器自動化中使用Javascript命名空間?

我跑:

protractor conf.js 

消息: 失敗:無法讀取未定義

堆棧的特性 'theApplicationURL': 類型錯誤:無法讀取的未定義的屬性 'theApplicationURL'

// conf.js

exports.config = { 
framework: 'jasmine2', 
directConnect: true, 
seleniumAddress: 'http://localhost:4444/wd/hub', 
specs:['path to/project_test.js'], 
capabilities: { 'browserName': 'chrome' } 
}; 

//actionwords.js

var Actionwords = { 
theApplicationURL: function() { 
browser.get('localhost'); 
browser.driver.manage().window().maximize(); 
browser.sleep(5000); 
    }, 
}; 

//project_test.js

describe('Test', function() { 
beforeEach(function() { 
this.actionwords = Object.create(Actionwords); 
}); 

it('Login_Test (uid:fe6d6670-a864-4d0f-a867-3faf9f51ff8d)', function() { 
// Given the application URL 
this.actionwords.theApplicationURL(); 
}); 
}); 

有人能幫助我在這?

+0

將你的動作詞變成一個函數而不是對象並導出它,然後在project_test.js中使用require() –

回答

3

變化的範圍內,這種方式:

var actionwords = { 
    theApplicationURL: function() { 
    browser.get('localhost'); 
    browser.driver.manage().window().maximize(); 
    browser.sleep(5000); 
    }, 
}; 

module.exports = actionwords; 

測試:

var actionwords = require("actionwords.js") 

describe('Test', function() { 
    it('Login_Test (uid:fe6d6670-a864-4d0f-a867-3faf9f51ff8d)', function() { 
    // Given the application URL 
    actionwords.theApplicationURL(); 
    }); 
}); 

反應對COMMENT約this

可以在beforeEach它分配給此範圍:

var actionwords = require("actionwords.js") 

describe('Test', function() { 
    beforeEach(function() { 
    this.actionwords = actionwords; 
    }); 
    it('Login_Test (uid:fe6d6670-a864-4d0f-a867-3faf9f51ff8d)', function() { 
    // Given the application URL 
    this.actionwords.theApplicationURL(); 
    }); 
}); 
+0

具體來說:失敗:無法讀取屬性「theApplicationURL」未定義 得到這個.. –

+0

我更新了我的答案。 – luboskrnac

+0

消息: 失敗:actionwords.theApplicationURL不是函數 –

0

beforeEach(...),this指的是傳遞給它的匿名函數。 it(...)也是如此。

聲明變量在describe

describe('Test', function() { 
    var actionwords = Object.create(Actionwords); 

    it('Login_Test (uid:fe6d6670-a864-4d0f-a867-3faf9f51ff8d)', function() { 
     actionwords.toApplicationURL(); 
    }); 
}); 
+0

試過。但沒有奏效。 ReferenceError:動作詞未定義 –

+0

哪一行?當調用'Object.create'或調用'actionwords.toApplicationURL'時? – schroffl

+0

At Object.create –

0

更新你actionword.js如下,

var Actionwords = { 
theApplicationURL: function() { 
    browser.get('localhost'); 
    browser.driver.manage().window().maximize(); 
    browser.sleep(5000); 
}, 
}; 
module.exports = new Actionwords(); 

而且你project_test.js就會像,

this.actionwords = require("actionword.js"); 

describe('Test', function() { 
it('Login_Test (uid:fe6d6670-a864-4d0f-a867-3faf9f51ff8d)', function() { 
    this.actionwords.theApplicationURL(); 
}); 
}); 
+0

您導出的對象不是對象函數。因此如果不在測試規範中使用,可能會有空間浪費。 –

相關問題