Cordova / PhoneGap TDD: Wie benutze ich Jasmine und Karma, um mobile Apps zu testen?

9
%Vor%

Basierend auf Karma # 472 funktioniert es nicht für einige / die meisten Leute, aber einige behaupten, es kann getan werden.

Was ich versuche zu erreichen, ist der Zugriff auf die Cordova-Umgebung (zB FileSystem-API, Batterieereignisse usw.) in meinen Spezifikationsdateien / Tests. (Ich mache übrigens eine Menge Dienste, aber ich würde gerne auf die echte API zugreifen)

Ich habe versucht, die Cordova-App auf die Karma-Runner-Seite mit window.location = 'http://karma:8080' umzuleiten, und während ich die Basis cordova.js -Datei in den Tests laden kann, wird deviceready nie ausgelöst (siehe Ticket), und ich kann nicht um den JS-Code zu bekommen, der benötigt wird, um Plugin-Funktionalität zu haben (dh Code, der von Plugins abhängt, kann nicht getestet werden).

Ich habe versucht, in der Cordova App ein <iframe> zu erstellen, das auf Karma zeigt, aber auch auf cordova konnte ich nicht zugreifen.

Ich habe gefunden andere injizieren Cordova zu window.parent , aber ich sehe nicht wirklich, wie das funktionieren könnte (ich kann nicht auf window.parent von meinem <iframe> zugreifen).

Ich habe versucht, dies in Ripple-Emulator und in Android AVDs zu tun, mit dem gleichen Mangel an Erfolg .

Irgendwelche Hinweise werden wirklich geschätzt. Ich verwende Cordova 3.4.1 auf Android (nicht auf iOS ausgerichtet) und die neuesten Karma & amp; Jasmin, plus AngularJS 1.3.

    
the_karel 12.05.2014, 22:08
quelle

1 Antwort

0

Sie könnten zwei separate Dateien index_real.html und index_test.html in Ihrem www -Ordner erstellen. index_real.html ist die index.html , die Sie derzeit haben. index_test.html würde mit der Jasmine-Version von index_real.html instrumentiert werden.

Erstellen Sie real.sh :

cp index_real.html index.html cordova run

und test.sh :

cp index_test.html index.html cordova run

Wenn Sie real.sh ausführen, wird Ihre nicht instrumentierte Version der Anwendung ausgeführt, und test.sh wird Ihre Testsuite ausführen. Wenn Sie index_test.html in der Nähe Ihres index_real.html eingerichtet haben, werden Sie UI-Automatisierungstests durchführen. Wenn Sie einen standardmäßigen Jasmine-Test-Runner verwenden, verfügen Sie über eine Einheitentestsuite.

    
codevision 09.12.2014 02:21
quelle