2017-09-02 88 views
0

我開始第一次接受測試我的Ember應用程序。Ember 2,驗收測試,websocket等待掛起,然後()等待完成

測試/接受/登錄-test.js

所以我從登錄這個開始

import { test } from "qunit"; 
import moduleForAcceptance from "myapp/tests/helpers/module-for-acceptance"; 

moduleForAcceptance("Acceptance | login"); 

test("Should login", function(assert) { 
    visit("/login"); 
    fillIn("input[type=email]", "[email protected]"); 
    fillIn("input[type=password]", "userpass"); 
    click("button[type=submit]"); 

    andThen(() => { 
    assert.equal(currentURL(), "/"); 
    assert.equal(find("h1").text(), "Hello!"); 
    }); 
}); 

永不熄滅的andThen(),所以它掛在click("button[type=submit]");

我明白爲什麼。

在我應用程序/模板/ index.hbs我有一個組件通知它依靠的WebSocket是不斷地在我的單頁的應用程序掛起(如果我打開Chrome瀏覽器存在未決的WebSocket調用.. )。

如果我從我的index.hbs中刪除此組件,一切都按預期工作。

登錄後,我應該告訴andThen()幫手忽略那個持續處於掛起狀態的service('notifications')的掛起狀態?

怎麼辦?

回答

1

對我來說,我正面臨着這個問題,因爲我使用了一種輪詢方法,在幾秒鐘內調用我的服務器來獲取內容。在測試模式

if(!Ember.testing){ 
    //polling 
} 

AndThen()運行時,我所做的就是禁用代碼基本上等待所有你的承諾在執行之前得到解決。

+0

它應該是'Ember.testing',而不是'Ember.test'。 – TBieniek

+0

已編輯。感謝糾正我:) – Sandeep