2016-08-22 4 views
0

私はember nubeです。私はEmberチュートリアルの手順を振り返り、認証フローを使ってブートストラップを追加するために非常に穏やかに迂回しました。途中でアプリケーションルートを追加しました。発電機は、この作られた:それは爆撃で申請経路のエラーのEmber単体テスト

import Ember from 'ember'; 
import ApplicationRouteMixin from 'ember-simple-auth/mixins/application-route-mixin'; 

export default Ember.Route.extend(ApplicationRouteMixin); 

import { moduleFor, test } from 'ember-qunit'; 

moduleFor('route:application', 'Unit | Route | application', { 
    // Specify the other units that are required for this test. 
    // needs: ['controller:foo'] 
}); 

test('it exists', function(assert) { 
    let route = this.subject(); 
    assert.ok(route); 
}); 

アプリ/路線/ application.jsのように見えます。私はいくつかの酔いどれをしましたが、私はあまりにも新しいので、私の悲哀の原因を以下のスタックトレースで見つけることはできません。もちろん、エラーを吹き飛ばすことはできますが、私は再び同じ失敗をやろうとしており、テストケースを弱めたくないという気持ちがあります。誰でも私のアプリケーションtest.jsにないことを知っていますか?

Unit | Route | application: it exists (1, 0, 1)Rerun39 ms 
Died on test #1  at testWrapper (http://localhost:7357/assets/test-support.js:7162:11) 
    at test (http://localhost:7357/assets/test-support.js:7176:39) 
    at Module.callback (http://localhost:7357/assets/tests.js:367:24) 
    at Module.exports (http://localhost:7357/assets/vendor.js:132:32) 
    at requireModule (http://localhost:7357/assets/vendor.js:32:18) 
    at Object.TestLoader.require (http://localhost:7357/assets/test-support.js:6942:7) 
    at Object.loadModules (http://localhost:7357/assets/test-support.js:6934:14): Cannot read property 'on' of [email protected] 22 ms 
Source:  
TypeError: Cannot read property 'on' of undefined 
    at http://localhost:7357/assets/vendor.js:151286:29 
    at Array.forEach (native) 
    at Class._subscribeToSessionEvents (http://localhost:7357/assets/vendor.js:151280:131) 
    at Class.init (http://localhost:7357/assets/vendor.js:151273:12) 
    at Class.superWrapper [as init] (http://localhost:7357/assets/vendor.js:35502:22) 
    at new Class (http://localhost:7357/assets/vendor.js:48214:14) 
    at Function.create (http://localhost:7357/assets/vendor.js:48485:14) 
    at Object.defaultSubject (http://localhost:7357/assets/test-support.js:8362:22) 
    at Object.context.(anonymous function) [as subject] (http://localhost:7357/assets/test-support.js:8394:37) 
    at Object.<anonymous> (http://localhost:7357/assets/tests.js:368:22) 
Source: at testWrapper (http://localhost:7357/assets/test-support.js:7162:11) at test (http://localhost:7357/assets/test-support.js:7176:39) at Module.callback (http://localhost:7357/assets/tests.js:367:24) at Module.exports (http://localhost:7357/assets/vendor.js:132:32) at requireModule (http://localhost:7357/assets/vendor.js:32:18) at Object.TestLoader.require (http://localhost:7357/assets/test-support.js:6942:7) at Object.loadModules (http://localhost:7357/assets/test-support.js:6934:14) 
+0

すでにアプリケーションルートにコードがありますか? – rmmmp

+0

@MikkoPaderes、私のapplication.jsルートは以下のようになります。 –

+0

'needs:['service:session']' – rmmmp

答えて

0

アプリケーションのルートが何をしているのかを知ることがなければ、私は必ずが、ここでは可能性のカップルですができません。

上のjQueryを呼び出すコードは、オブジェクトの上に、そこにあるように見えています定義されていません。

https://guides.emberjs.com/v2.7.0/addons-and-dependencies/managing-dependencies/#toc_environment-specific-assets)あなたはまだ(あなたのindex.htmlでスクリプトを含めました場合のように)あなたのテストに利用できないサードパーティのライブラリをインポートしていたかもしれない、またはあなたが環境固有の資産を持っている可能性があり

"needs"ブロックに依存関係を含める必要がある場合もあります。通常、データオブジェクト、サービス、コントローラのように、コンテナからロードされるものは、単体テストのニーズブロックで指定する必要があります。

+0

ありがとうございました。私はOPを編集してルートを組み込んだ。私は、生成されたテストでコメントされた "needs"ブロックを見て、構文の例を見ることができますが、正確に何が必要なのかは分かりません。私はシンプルな認証のものを追加しました。多分それはそこに「貧しい人々」ですか? –

+0

はい、おそらく。あなたの "needs"ブロックは、emberコンテナから読み込まれたものをテストに指定します。たとえば、テスト対象のクラスがサービス(単純認証の場合もある)を注入した場合、必要に応じて "service:"を指定します。これは、テストフレームワークに要求されたときにそのサービスを提供するように指示します。 ember-qunitのドキュメントには、ガイドにフィードバックする必要がある詳細がいくつかあります。https://github.com/rwjblue/ember-qunit/blob/master/README.md –

関連する問題