2016-11-18 1 views
0

conf.js、actionwords.js、project_test.jsという3つのファイルがあります。 Actionwords.jsとproject_test.jsはhiptest tool.Soから生成されたファイルなので、この構造をテストケースの自動化に使用する必要があります。私がcmdを実行すると、エラーが発生します。分度器の自動化でJavascriptの名前空間を使用するには?

は私が走った:

protractor conf.js 

メッセージ: 失敗しました:未定義

スタックのプロパティ 'theApplicationURL' を読み取ることができません: はTypeError:プロパティ 'theApplicationURL' 未定義のを読み取ることができません

// conf.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(); 
}); 
}); 
exports.config = { 
framework: 'jasmine2', 
directConnect: true, 
seleniumAddress: 'http://localhost:4444/wd/hub', 
specs:['path to/project_test.js'], 
capabilities: { 'browserName': 'chrome' } 
}; 

//actionwords.jsは、誰もがこれで私を助けることができますか?

+0

アクションワードを関数に変更するオブジェクトの代わりにそれをエクスポートし、require()を使用してproject_test.jsで使用します。 –

答えて

3

変更のスコープ内の変数を宣言すること。この方法:

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

module.exports = actionwords; 

テスト:COMMENTについてON

var actionwords = require("actionwords.js") 

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

REACTION:

あなたは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

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

オブジェクトがオブジェクトでない関数をエクスポートしています。テスト仕様で使用されていない場合はスペースが無駄になる可能性があります。 –

関連する問題