2016-08-22 1 views
0

Ich bin ein Ember Nube. Ich habe die Schritte im Ember-Tutorial nachvollzogen und einen sehr leichten Umweg gemacht, um Bootstrap mit einem Authentifizierungsablauf zu versehen. Irgendwo auf dem Weg habe ich die Anwendungsroute hinzugefügt. Der Generator hat dies:Ember Unit Test für die Anwendung Route fehlgeschlagen

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); 
}); 

app/Routen/application.js wie folgt aussieht:

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

export default Ember.Route.extend(ApplicationRouteMixin); 

Es Bombardierung ist. Ich habe ein wenig Nachforschungen angestellt, aber ich bin zu neu, um die Ursache meines Leidens in der Stapelspur unten zu finden. Ich könnte natürlich den Fehler einfach wegblasen, aber ich habe das Gefühl, ich werde den gleichen Fehler noch einmal machen und möchte die Testfälle nicht schwächen. Weiß jemand was ich in meiner Bewerbung-test.js vermisse?

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

Gibt es bereits Codes in der Anwendungsroute? – rmmmp

+0

@MikkoPaderes, meine Anwendung.js Route sieht wie << oben bearbeitet >> –

+0

Versuchen Sie, 'braucht: ['Service: Sitzung']' – rmmmp

Antwort

0

Ohne zu wissen, was Ihre Anwendung Weg tut, kann ich nicht sicher sein, aber hier sind ein paar Möglichkeiten:

Es sieht aus wie es Code ist ein jquery auf, auf einem Objekt aufrufen, die wurde nicht definiert.

Sie haben eine 3rd-Party-Bibliothek importiert könnte, die die Tests noch nicht verfügbar ist (wie wenn Sie haben ein Skript in Ihrer index.html enthalten) oder könnten Sie umgebungsspezifischen Vermögenswerte (https://guides.emberjs.com/v2.7.0/addons-and-dependencies/managing-dependencies/#toc_environment-specific-assets)

haben

Sie müssen möglicherweise auch eine Abhängigkeit in Ihren "Bedürfnisse" -Block einfügen. Dinge, die normalerweise aus dem Container geladen werden, wie z. B. Glutendatenobjekte, Dienste und Controller, müssen im Bedarfsblock für Komponententests angegeben werden.

+0

Danke. Ich habe das OP bearbeitet, um die Route einzuschließen. Ich sehe einen auskommentierten "Bedarf" -Block im generierten Test und kann Beispiele der Syntax sehen, aber ich weiß nicht genau, was genau benötigt wird. Ich habe etwas Einfach-Auth-Zeug hinzugefügt. Vielleicht ist es dort "bedürftig"? –

+0

ja, wahrscheinlich. Der Block "Bedürfnisse" gibt die Testobjekte an, die aus dem Ember-Container geladen werden. Wenn Ihre Testklasse beispielsweise einen Dienst einfügt (was mit einer einfachen Authentifizierung möglich ist), würden Sie "service: " als Bedarf angeben. Dies wird dem Test-Framework mitteilen, dass es diesen Dienst bereitstellen soll, wenn es darum gebeten wird. Die Dokumentation für ember-qunit enthält einige weitere Details, die in die Handbücher eingegeben werden müssen: https://github.com/rwjblue/ember-qnit/blob/master/README.md –