2016-09-23 14 views
1

私は関数内に入れたいコードと同じビットを繰り返すブロックをいくつか持っています。私はこれを何度も何度も繰り返すのではなく、関数を呼び出すだけです。入れ子関数内でjavascriptに変数を渡す方法

it('should move directly to Draft', function() { 
    posting_sum_page.locate_action_button.click(); 
    posting_action_page.move_action.filter(function(elem) { 
    return elem.getText().then(function(text) { 
     return text === 'Draft'; 
    }); 
    }).click(); 
}); 

ブロックのこの部分は、関数を作成したい繰り返し部分です。私はこれを行う方法について私を逃れているので、私はjavascriptに新しいです。

return elem.getText().then(function(text) { 
     return text === 'Draft'; 
    }); 
    }).click(); 

私は異なる変数で '下書き'を代用できる必要があります。私はこれの一部にページオブジェクトを使用していますが、私はよく分かりません)このような関数を作成してテキストを渡す方法& B)スペック側かページ側に行くべきか?これはおそらくほとんどの人にとっては基本的なことです。しかし、私はjavascriptに新しいので、私はこの問題の周りに頭をラッピングするのに問題があります。

答えて

0

を再利用したい場合は、私は「ヘルパー」モジュールに、全フィルタ機能を抽出します。

helpers.js:テストで

var Helpers = function() { 
    this.filterByText = function (text) { 
     return function (elem) { 
      return elem.getText().then(function(actualText) { 
       return actualText === text; 
      }); 
     }; 
    } 
} 

module.exports = new Helpers(); 

は使用方法:

var helpers = require("helpers"); 

describe("My Test", function() { 
    it('should move directly to Draft', function() { 
     posting_sum_page.locate_action_button.click(); 
     posting_action_page.move_action.filter(helpers.filterByText('Draft')).click(); 
    }); 
}); 
+0

みんなありがとうございます。あなたのソリューションは最も効果的でした。みんなに非常に感謝しています。 –

0

多分このような何か?

describe('...something...', function() 
{ 
    var clickBtn; 


    beforeEach(function() 
    { 
    clickBtn = function(testText) 
    { 
     return posting_action_page.move_action.filter(function(elem) 
     { 
     return elem.getText().then(function(currentText) 
     { 
      return currentText === testText; 
     }); 
     }).click(); 
    }; 
    }); 


    it('should move directly to Draft', function() 
    { 
    posting_sum_page.locate_action_button.click(); 
    expect(clickBtn('Draft')).toEqual('...something...'); 
    }); 
}); 
0

あなたはリターンブロックのみ

it('should move directly to' + targetText, function() { 
    posting_sum_page.locate_action_button.click(); 
    posting_action_page.move_action.filter(function(elem) { 
    checkSameText(elem, targetText); 
    }).click(); 
}); 

function checkSameText(el, targetText) { 
    return el.getText().then(function(text) { 
     return text === targetText; 
    }); 
} 
0

私はページオブジェクトタイプはposting_action_page.move_action何のためにあるのかわからないんだけど、私はあなたが探していると思うことはby.buttonTextを使用していますまたはby.linkText

// html: <button>Draft</button> 
element(by.buttonText('Draft')).click(); 

// html: <a href="">Draft</button> 
element(by.linkText('Draft')).click(); 

by.partialButtonTextby.partialLinkTextなどの役に立つかもしれません他のロケータがあります。

関連する問題