2012-08-09 5 views
10

Ich möchte Phantomjs und Jasmine für Unit-Test-Javascript verwenden. Phantomjs Website empfiehlt, dass ich eine separate Sache, speziell PhantomJasmine verwenden. Ich habe PhantomJasmine heruntergeladen und das Beispiel ausgeführt. Alles ist perfekt gelaufen. Ich habe dann die Zeile var system = require('system'); an den Anfang von example_spec.js hinzugefügt. Der Phantomjs gibt jetzt einen Fehler aus, wenn ich versuche, das Beispiel auszuführen, das ich bekomme "ReferenceError: Kann nicht finden: require". Also, ich möchte Dinge wie den Browser starten, aber es sieht so aus, als könnte ich Jasmin UND Phantomjs Syntax nicht kombinieren. Ich kann nur reines Jasmin mit Phantomjs laufen lassen. Wie kann ich beide in der gleichen Datei verwenden? wie:PhantomJS "Kann Variable nicht finden: require" bei Verwendung von PhantomJasmine

console.log('Loading a web page'); 
var page = new WebPage(); 
var url = "http://www.phantomjs.org/"; 
page.open(url, function (status) { 
    //Page is loaded! 
    describe("A suite", function() { 
     it("contains spec with an expectation", function() { 
     expect(true).toBe(true); 
     }); 
    }); 
    phantom.exit(); 
}); 

Antwort

4

Es ist nicht ganz so, wie Sie es verwenden sollten. Der Code zur Steuerung von Phantomjs sollte nicht mit Jasmin-Spezifikationen verwechselt werden und umgekehrt.

Sie sollten Ihre Spezifikationen in .js-Dateien trennen und ein Standard-Jasmin-Setup mit einem HTML-Spezifikationsrunner erstellen, der die spec .js-Dateien lädt und diese HTML-Datei in phantomjs öffnet.

Eine andere Lösung ist, Grunt mit Phantomjs und Jasmin zu verwenden, um Jasmin-Spezifikationen automatisch laufen zu lassen.

https://github.com/cowboy/grunt
https://github.com/creynders/grunt-jasmine-task

+0

Ich habe meine Dateien getrennt. Ich bekomme den gleichen Fehler. Der innere Inhalt meines head Tags in der html Datei ist: wo execPage.js reine PhantomJS Code enthält, und jaztest1 enthält reinen Jasmin-Code. Ich schaute auch in Grunt. Es ist nur ein anderer, Jasmine mit Phantom js laufen zu lassen. Ich muss wissen, wie man Jasmine UND Phantomjs Skripte miteinander laufen lässt. Dh: Navigiere zu Seite, führe Jasmin aus. – Hohohodown

+0

Ich denke, ich bekomme das Problem besser. Hier ist das Szenario: Ich habe tests.js, das sind einige Jasmin-Tests. Ich möchte zu google.com navigieren und sicherstellen, dass die Suchleiste angezeigt wird. google.com enthält keinen Jasmin. Wie kann ich das machen? – Hohohodown

+0

Rufen Sie das Jasmin-Skript in der HTML-Seite auf, nicht über PhantomJS. Grundsätzlich richten Sie es GENAU so ein, als würden Sie die Jasmin-Tests manuell ausführen und dann die URL dieser HTML-Seite an PhantomJS übergeben, um sie in der Befehlszeile auszuführen. – Creynders