2017-10-16 7 views
0

내가 각도기에서 테스트를 쓰고 있어요 그리고 내가 바보 증거 methord가이여러 단일 기능

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 함수를 쓴 기대와 나는 오른쪽에 날씨를 알고 싶어 그와 같은 함수를 작성하십시오.

답변

0

저에게 그것은 조금 지나친 것 같습니다. 분도기는 정상적인 경우 동기 실행을 이미 처리해야합니다.

명령이 나열된 순서대로 실행되고 (이와 같이 표시되는 경우) 이러한 피라미드를 작성할 필요가 없습니다.

then()을 사용하면 즉시 약속을 해결할 수 있지만 새로운 비동기 작업을 시작하고 도도면을 then() 외부로 계속 진행하십시오. 따라서 첫 번째 부분에 처음으로 then()을 입력하면 함수의 두 번째 부분이 첫 번째 부분과 병렬로 실행됩니다 (확실하지는 않습니다.).

케이스 중간에 expect : 작동하지만, 모범 사례는 아니지만 작동합니다. 중간에 예상 한 것이 실패하면 테스트 케이스는 끝날 때까지 계속되지만 테스트 케이스 상태는 실패로 남습니다. 테스트 케이스가 하나가 아닌 두 개가 있어야 할 가능성이 큽니다. pageObject 원하지 않을 내부

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); 
}); 

그래서 모든 모든 적절한 방법으로 더 같은 것을 보인다