Ich habe gelesen und gefolgt EmberJS Service Injection for Unit Tests (Ember QUnit), aber ich bin immer noch nicht in der Lage, wo das Problem ist.Injektion von Service in Ember-Tests
Ich möchte testen, ob meine Authentifizierung wie erwartet funktioniert. Ich habe Authenticator für ember-simple-auth geschrieben und Session wird in Route injiziert. Der Code selbst funktioniert ohne Probleme.
Jetzt möchte ich einen Test erstellen, der testen wird, ob meine Authentifizierung wie erwartet funktioniert. Also möchte ich den AuthManager direkt verwenden.
moduleFor('route:index', 'Unit | Route | xyz', {
needs: ['service:session']
});
test('2', function(assert) {
let route = this.subject();
let s = route.get('authManager');
Wenn ich den Inhalt von 's' drucken, bekomme ich ''. Wenn ich dies zu etwas anderem ändere, dann ist die Antwort wie erwartet nicht definiert. Problem ist, wenn ich die Eigenschaft 'isAuthenticated' erhalten oder 'invalidate()' ausführen möchte. In diesen Fällen wurde ich "undefiniert". Was mache ich falsch?
Meine Vermutung ist, dass Sie Integrationstests verwenden müssen für solche Zwecke. Wenn Sie Komponententests schreiben möchten, müssen Sie alles außer dem getesteten Objekt selbst vortäuschen (in diesem Fall die Indexroute). Ich hatte ein ähnliches Problem Testing Services: http://StackOverflow.com/Questions/37190648/Injecting-Service-into-Amixin-Eember2-3 – Pavol