基於this excellent screencast和example,我已經能夠成功地測試我的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。
布萊恩
感謝您的回覆也將工作。所以我剛剛嘗試過,並且我不再遇到上述錯誤(hooray!),但是取而代之,我之前見過:**「...錯誤未捕獲TypeError:無法調用方法'extractId'未定義在/Users/.../Report3YO/app/components/ember/ember-data-latest.js:2627"**這個錯誤是否表明它正在查找的某個對象丟失,或者還沒有被渲染當它被執行(因此,「未定義」)? – bk11425
很難肯定地說,沒有在調試器中查看它。 'extractId'是一個應該在串行器上的方法。當測試運行時,ember試圖將某個模型傳遞給序列化器的'extractId'函數,但是序列化器未定義。串行器是適配器的一個屬性,當應用程序啓動時會被初始化,所以測試設置可能有些問題。聽起來很像這個問題:http://stackoverflow.com/questions/18312596/uncaught-typeerror-cannot-call-method-extractid-of-undefined-ember-data-while –
感謝您的有用反饋和鏈接另一個問題。我花了一段時間來修補,但我終於找到了工作。當我註釋掉除上述之外的所有測試時,它就起作用了。然後我又加了一個,得到了同樣的「extractId」錯誤。所以在百靈之中,我評論說「App.reset();」在模塊的'設置'功能(見[測試示例鏈接](https://github.com/toranb/ember-testing-example/blob/master/js/tests/integration_tests.js)),並且都工作得很好。我讀過在調用Karma-runner&QUnit的測試中需要調用「reset」的功能,但我估計不會了。 – bk11425