2017-02-12 1 views
0

Ich laufen Jasmine Tests in SystemJS + Typescript-Umgebung (grundsätzlich a plunk, die Angular 2 Test Rig sein soll).Jasmine asynchronen Boot in SystemJS + Typescript-Umgebung

Jasmine wird absichtlich als globale Bibliothek verwendet, nicht über TypeScript import.

Dies führt zu

Keine Angaben

Es gibt keine Fehler in der Konsole gefunden, die Spezifikationen laufen einfach nicht:

main.ts

describe('test',() => { 
    it('test',() => { 
    console.log('test'); 
    expect(1).toBe(1); 
    }); 
}); 

Ich bin sicher, das ist wegen t o die Tatsache, dass main.ts asynchron mit SystemJS geladen wird, sollte Jasmine Boot-Vorgang zusätzlich ausgelöst werden, um es auf die Spezifikationen zu nehmen.

Das Handbuch beschreibt, was default boot configuration in Jasmine ist, aber es erklärt nicht gut, wie es manuell ausgeführt werden kann.

Wie kann man die Tests mit SystemJS und Global Jasmine in diesem Fall durchführen?

Antwort

1

Der Grund ist, dass Ihre Spezifikationen geladen werden, nachdem jasmine Versuche unternommen hat, sie zu suchen und auszuführen.

Um dieses Problem zu überwinden Sie window.onload wieder nach Ihren Angaben geladen werden durch system.js anrufen:

<script> 
    System.import('app').then(window.onload).catch(console.error.bind(console)); 
</script> 
+0

Dank. Calling Event Handler sieht direkt aus wie ein Hack, aber ich sehe nicht, wie [htmlReporter-Variable] (https://github.com/jasmine/jasmine/blob/v2.5.2/lib/jasmine-core/boot.js#L140) könnte sonst erreicht werden. – estus