2016-11-24 14 views
1

分度器を使用して書き出しモジュールを作成しました。内部に複数の機能が定義されています。 今、エクスポートされた関数の1つを同じモジュール内の別の関数の中で呼びたいと思います。 私のモジュールは以下のようになります。分度器:同じモジュール内でエクスポートされた関数を呼び出すことができません

私がテストスクリプトでread_page_data関数を呼び出すと、以下のエラーが発生します。

失敗:this.read_page_number_dataは関数ではありません。

以下の質問にすべてのオプションを試しました。まだ成功はありません。

protractor calling an exported function within the same module

注:read_page_data関数を呼び出す前に、私は内部check_link_present関数を呼び出すclick_link機能を呼び出しています。しかし、この呼び出しは正常に動作し、check_link_present関数は、click_link関数から正しく呼び出しを取得します。この後、コントロールはlinkで指定されたページにナビゲートします。

+0

「this」には接頭辞を付ける必要があります。エクスポートモジュールのすべてのメソッド 'read_page_number_data'に渡します。それは 'this.read_page_number_data'のようになります –

+0

返信のために@SureshSallojuに感謝します。しかし、私が接頭辞「これを」。すべての機能でエラーが発生する [21:33:56] I/launcher - WebDriverのインスタンスを1つ実行中 [21:34:01] E /ランチャー - エラー:C:\ uiauto \ lib \ search_lib .js:4 this.enter_search_key_home_page:function(key){ ^ SyntaxError:予期しないトークン。 –

+0

あなたは私の答えのように試してみることができます –

答えて

0

解決策の1つは、モジュールに固有の変数にオブジェクトを割り当てることです。例:

module.exports = myModule = { 
    //... 
} 

次に、あなたはあなたが例JSFiddle hereを見つけることができますmyModule.read_page_number_data()など

とモジュール内で、あなたの関数を呼び出すことができます。 this文脈上

注心に留めておくべき

一つはthisは、それがclick_linkのためではなく、read_page_dataのために働いている理由かもしれない親関数が呼び出された方法に応じて、コンテキスト、だ変えることができるということです。

thisキーワードhereについてさらに詳しく知ることができます。

+0

ありがとうマティアス..このソリューションは私のために働いているようだ。今、関数は他の関数から呼び出されています。 –

+0

恐ろしい!それが助けられたら、それを回答として受け入れることを検討してください。 –

0

なぜ以下のように試してみませんか?これはページオブジェクトモデルのテストフレームワークのベストプラクティスの1つです。

var PageName = function(){ 
       this.firstMethod = function(){ 
       //logic 
       }; 
       this.secodnMethod = function(){ 
       //logic 
       }; 
    } 

module.exports = new PageName(); 
+0

私はこの方法で試しても。それでもなお同じ問題が生じる。そして、私は同じ古いエラーを取得します。 –

+0

あなたのアクセスとどのようにアクセスしていますか? –

+0

ありがとうございます。ソリューションの下で私のために働いた。実際に私はページライブラリモジュールを定義しました。そして、これらの関数はテストスクリプトから呼び出されています。しかし、ページモジュール内の1つの特定の関数は、同じモジュール内の他の関数を呼び出す必要があります...それが失敗した場所です。 –

関連する問題