2017-10-16 15 views
0

を期待して、私は分度器でテストを書いていますし、私はこの複数の単機能で

this.Then(/^I should see a pane on the right with an Interactions and Remarks tab$/,() => { 
    return waitForPresence(mobileQADashboard.getTabPanel()).then(()=>{ 
     return mobileQADashboard.selectInteractionsTab().then(()=>{ 
      return waitForPresence(mobileQADashboard.pageElements.viewAllInteractionsLink).then(()=>{ 
      return expect(mobileQADashboard.pageElements.viewAllInteractionsLink.isDisplayed()).to.eventually.be.true; 

      }); 
     }); 
    }); 
    return waitForPresence(mobileQADashboard.getTabPanel()).then(()=>{ 
     return mobileQADashboard.selectRemarksTab().then(()=>{ 
      return waitForLoader().then(()=>{ 
       return waitForPresence(mobileQADashboard.pageElements.addRemarkButton).then(()=>{ 
        return expect(mobileQADashboard.pageElements.addRemarkButton.isDisplayed()).to.eventually.be.true; 
       }); 
      }) 
     }); 
    }) 

}); 

のような発言を期待して2と機能を書いたが、それは馬鹿の証拠methordであり、私は天気を知りたいと思いましたそのような関数を書いてください。

答えて

0

私には少し過ぎているようです。分権者は、通常の場合には同期実行を既に処理しているはずです。

あなたのコマンドがリストされた順番で実行されている限り、そのようなピラミッドを構築する必要はありません。

then()を使用するとすぐにプロミスを解決できますが、新しい非同期タスクを開始して、then()以外の線で分度器を続けることもできます。したがって、最初のthen()を2行目に入力すると、関数の2番目の部分は最初の部分と並行して実行されます。

ケースの真ん中にあるexpectについて:それはうまくいっていますが、うまくいきます。途中であなたの期待が失敗した場合、テストケースは最後まで続きますが、テストケースのステータスは失敗したままです。おそらく1つではなく2つのテストケースが必要です。

this.Then(/^I should see a pane on the right with an Interactions and Remarks tab$/,() => { 
    waitForPresence(mobileQADashboard.getTabPanel()); 
    mobileQADashboard.selectInteractionsTab(); 
    waitForPresence(mobileQADashboard.pageElements.viewAllInteractionsLink); 
    expect(mobileQADashboard.pageElements.viewAllInteractionsLink.isDisplayed()).to.eventually.be.true; 

    //gets now executed after the firt expect. In your code it's executed in parallel to the first. 
    waitForPresence(mobileQADashboard.getTabPanel()); 
    mobileQADashboard.selectRemarksTab(); 
    waitForLoader(); 
    waitForPresence(mobileQADashboard.pageElements.addRemarkButton); 
    expect(mobileQADashboard.pageElements.addRemarkButton.isDisplayed()).to.eventually.be.true; 
}); 

また、ページオブジェクト内にexpectがあることは望ましくありません。テストケース(it() -block)を書くには、a)合格/不合格を維持し、b)同時にpageObjectを調べる必要はありません。それがなければテストケースを理解するはずです。

したがって、すべてのすべての適切な方法は、このようなもっと何かようだ:

it(/first case/,function(){ 
    this.ThenFirst(); 
    expect(mobileQADashboard.pageElements.viewAllInteractionsLink.isDisplayed()).to.eventually.be.true; 
}); 
it(/second case/,function(){ 
    this.ThenSecond(); 
    expect(mobileQADashboard.pageElements.addRemarkButton.isDisplayed()).to.eventually.be.true; 
}); 

し、これらのページオブジェクト:

this.ThenFirst(/^I should see a pane on the right with an Interactions and Remarks tab$/,() => { 
    waitForPresence(mobileQADashboard.getTabPanel()); 
    mobileQADashboard.selectInteractionsTab(); 
    waitForPresence(mobileQADashboard.pageElements.viewAllInteractionsLink); 
}; 
this.ThenSecond(/^I should see a pane on the right with an Interactions and Remarks tab$/,() => { 
    waitForPresence(mobileQADashboard.getTabPanel()); 
    mobileQADashboard.selectRemarksTab(); 
    waitForLoader(); 
    waitForPresence(mobileQADashboard.pageElements.addRemarkButton); 
}); 
関連する問題