私のテスト用に私のPageObjectをリファクタリングしています。現在、私はモーダルで2つの異なるボタンにあるラベルをチェックしています。モーダル要素を返し、必要に応じて開きます。
/* home-spec.js */
it('Some test', function(){
expect(homePage.getButton1Label()).toEqual(expectations.btn1);
expect(homePage.getButton2Label(true)).toEqual(expectations.btn2);
});
これは、現在、私は、モーダルがオープンであるかどうかを表す変数を渡す必要があります動作しますが。それは私が修正しようとしているビットです。私がやりたい何
/* home-page.js */
var HomePage = function() {
function getModalContent(modalName, isModalOpen){
/* isModalOpen = element(by.css('.modal-content')).isPresent(); */
if(!isModalOpen){
var manageProductsView = getUiView('SOME_VIEW');
var btn = getButton(manageProductsView);
btn.click();
browser.waitForAngular();
}
return element(by.css('.modal-content'));
}
function getButtonLabel(buttonBinding, isModalOpen){
/* isModalOpen = element(by.css('.modal-content')).isPresent(); */
var modalcontent = getModalContent('MODAL_NAME', isModalOpen);
var modalFooter = modalcontent.element(by.css('.modal-footer'));
var btn = modalFooter.element(by.binding(buttonBinding));
return btn.getText();
}
return {
getButton1Label: function(isModalOpen){
return getButtonLabel('btn1', isModalOpen);
},
getButton2Label: function(isModalOpen){
return getButtonLabel('btn2', isModalOpen);
}
}
}
はそのisModalOpen
依存関係を削除しているが、私はそれを行うための正しい方法を見つけるように見えるしません。コメントは私が試したことを示し、行く方法と思われた。またブロックthen
にラップしようとしました。 Vlad answerに基づいて
EDIT
それはモーダルが開いている場合
function getButtonLabel(buttonBinding){
return element(by.css('.modal-content')).isPresent().then(function(isModalOpen){
var modalcontent = getModalContent('MODAL_NAME', isModalOpen);
var modalFooter = modalcontent.element(by.css('.modal-footer'));
var btn = modalFooter.element(by.binding(buttonBinding));
return btn.getText();
});
}
は手動で約束を扱う避けるためにしようとしていたが、私はいくつかのケースでは、それは
:
私の一般的な感覚は、ロジックは、あなたは、将来のものの一部をリファクタリングする場合があります、少しも複雑に見えるということですif(element(by。mod(modal-content)))。isDisplayed()) – lauda