2017-04-27 76 views
0

我有一個功能,在我的一些量角器測試被稱爲,做一些任務是採取比量角器默認超時以上(這似乎是60秒)變遷量角器默認的超時時間內功能

我讀過您應該能夠使用「jasmine.DEFAULT_TIMEOUT_INTERVAL」更改默認超時,但使用以下代碼,超時仍會在我設置4分鐘之前發生。由於我想在未來重用這個測試部分,所以我不能簡單地將它作爲參數添加到測試函數中。

這裏是示例代碼,任何人都可以告訴我我做錯了什麼?

describe('reset data', function() { 
    it('should reset data', function() { 
    jasmine.DEFAULT_TIMEOUT_INTERVAL = 240000; 

    browser.ignoreSynchronization = true; 

    // ... test code here 
    }); 
}); 

我碰到下面的錯誤,之後測試失敗大約60秒後:

Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.

+0

你看了超時文檔? https://github.com/angular/protractor/blob/master/docs/timeouts.md在你的規範中超時的語法是不正確的(我將它設置在配置中,而不是規格) – Gunderson

+0

幾個職位我通過谷歌發現在規範中直接使用它們。正如我在答案中所添加的那樣,我不希望整個測試超時4分鐘,只是一些需要很長時間才能完成的命令。我不希望100個命令有4分鐘的超時時間,只有2個需要它。 –

+0

當然,但現在看來你的測試超時在60秒。所以'jasmine.DEFAULT_TIMEOUT_INTERVAL = 240000;'似乎沒有做任何事情。 – Gunderson

回答

0

嘗試,而不是他的一個:

通過使用遞歸函數,以確定它是否存在。

function checkIfPresent(maxSec, elm, blnPresent) { 
    if (maxSec > 0) { 
     browser.sleep(1000).then(function() { 
      elm.isPresent().then(function(bln) { 
       if (bln != blnPresent) { 
        checkIfPresent(maxSec - 1, elm, blnPresent) 
       } 
      }); 
     }); 
    } 
} 

如果您傳遞checkIfPresent(300000,榆樹,真)
這將檢查對象存在每一秒,5分鐘之內。
希望它有幫助。 :)

前一條評論:
我同意評論。
應該在配置文件中聲明(conf.js)

jasmineNodeOpts: { 
    onComplete: null, 
    isVerbose: true, 
    showColors: true, 
    includeStackTrace: true, 
    defaultTimeoutInterval: 1000000 
} 
+0

這不會幫助我。這個測試應該有兩個單獨的超時。第一個是我知道的東西需要很長的時間,長達幾分鐘。 例如:前3個電話應該有4分鐘的超時時間,其餘電話應該只需要30秒。 –

+0

是否有某個元素等待出現或消失? –

+0

檢查所述元素不是問題,問題是我有第一個元素需要3-4分鐘才能出現的測試,其後它應該是即時(30秒以下),其餘的我不想由於ONE呼叫,將整個規格設置爲4-5分鐘。 –