2013-08-20 74 views
0

基於this excellent screencastexample,我已經能夠成功地測試我的Ember(RC7)應用程序,寫入模型對象等。我在集成測試中遇到了麻煩。我甚至嘗試了最基本的測試,如下所示,但無濟於事。關於我在做什麼的任何提示都是錯誤的?Ember集成測試錯誤

LOG: 'App ready'

INFO: 'generated -> route:application', Object{fullName: 'route:application'}

LOG: 'NeedsAuthMixin: user not authenticated (1).'

INFO: 'Rendering application with ', Object{fullName: 'view:application'}

INFO: 'Rendering login with ', Object{fullName: 'view:login'}

LOG: 'Transitioned into 'login''

LOG: 'testing... login screen loads OK 1'

LOG: 'Transitioned into 'login''

Chrome 28.0.1500 (Mac OS X 10.6.8) Integration Tests - load login page FAILED Expected 1 assertions, but 0 were run

背景:正如你所看到的,因爲我的應用程序加載時,它會檢查用戶身份驗證,於是它轉變爲一個登錄頁面,如果用戶」不是個

我從控制檯收到此錯誤t認證。

這是調用測試(從CoffeeScript的生成)的代碼:

asyncTest("test: load login page", function() { 
    expect(1); 
    console.log("testing... login screen loads OK 1"); 
    return visit("/login").then(function() { 
    return ok(1 === 1, "Value equal 1."); 
    }); 
}); 

我噶配置文件是here

布萊恩

回答

0

我想,如果你使用test(),而不是asyncTest()

+0

感謝您的回覆也將工作。所以我剛剛嘗試過,並且我不再遇到上述錯誤(hooray!),但是取而代之,我之前見過:**「...錯誤未捕獲TypeError:無法調用方法'extractId'未定義在/Users/.../Report3YO/app/components/ember/ember-data-latest.js:2627"**這個錯誤是否表明它正在查找的某個對象丟失,或者還沒有被渲染當它被執行(因此,「未定義」)? – bk11425

+0

很難肯定地說,沒有在調試器中查看它。 'extractId'是一個應該在串行器上的方法。當測試運行時,ember試圖將某個模型傳遞給序列化器的'extractId'函數,但是序列化器未定義。串行器是適配器的一個屬性,當應用程序啓動時會被初始化,所以測試設置可能有些問題。聽起來很像這個問題:http://stackoverflow.com/questions/18312596/uncaught-typeerror-cannot-call-method-extractid-of-undefined-ember-data-while –

+0

感謝您的有用反饋和鏈接另一個問題。我花了一段時間來修補,但我終於找到了工作。當我註釋掉除上述之外的所有測試時,它就起作用了。然後我又加了一個,得到了同樣的「extractId」錯誤。所以在百靈之中,我評論說「App.reset();」在模塊的'設置'功能(見[測試示例鏈接](https://github.com/toranb/ember-testing-example/blob/master/js/tests/integration_tests.js)),並且都工作得很好。我讀過在調用Karma-runner&QUnit的測試中需要調用「reset」的功能,但我估計不會了。 – bk11425