2015-12-28 36 views
1

我有一個測試,從頁面對象調用2個函數。當第一個函數的期望成功時,我希望第二個函數正常執行。否則,我想要執行第二個函數來中止。用量角器,我怎樣才能返回一個函數布爾值

這是我的測試與2功能。

it('Should do something.', function() { 
    page.expectModalBoldTextOf(('Expected Text')); 
    page.clickButton('Yes'); 
}); 

這裏就是我想返回布爾函數。

public expectModalBoldTextOf(boldedText: string) : boolean { 
    element.all(by.className('modal-body')).filter(function (elm) { 
     return elm.isDisplayed().then(function (displayed) { 
      return displayed; 
     }); 
    }).then(function (modalBodyArray) { 
     if (modalBodyArray.length === 0) { // force a descriptive failure. 
      expect('Modal dialog').toBe('displayed on the page'); 
      return false; 
     } 
     else { 
      modalBodyArray[0].element(by.tagName('strong')).getText().then(function (strongText) { 
       expect(strongText.toUpperCase()).toBe(boldedText.toUpperCase()); 
       return true; 
      }); 
     } 
    }); 
} 

現在,上面呈現下面的量角器錯誤。

聲明類型既不是'void'也不是'any'的函數必須返回一個值或由單個'throw'語句組成。

如果我從改變返回類型爲「布爾」到「任何」此功能的實現需要的(當我刪除return語句),但它不返回任何指示信號,它成功或失敗,使我可以阻止執行clickButton函數。

據我所知,我只能在成功時調用expectModalBoldTextOf()函數中的clickButton()函數。但是我寧願返回一個布爾值來表示成功或失敗,因爲這會使它在我們的應用程序中更具普遍性。

回答

2

expectModalBoldTextOf()返回承諾,該承諾將由Control Flow解析爲布爾值。把any返回類型,並明確解析你的測試中的函數結果:

page.expectModalBoldTextOf('Expected Text').then(function (succeed) { 
    if (succeed) { 
     page.clickButton('Yes'); 
    } 
}); 
+0

謝謝,這讓我走上了正軌。 –

相關問題