Warum tun diese resharper Jasmin tests laufen im browser, aber nicht in phantomjs
Vielen Dank im Voraus an jeden, der liest sich durch diese - es gibt eine ganze Menge von Details, um die Frage zu stellen.
Ich versuche, einzuführen, javascript-testing in unser Projekt mit Jasmin. Die tests, die ich geschrieben habe, funktioniert im browser, aber nicht mit PhantomJS über Resharper.
Ich vermute, mir fehlt etwas über die Sanitär-Bedarf analysieren unsere JS-Dateien (vielleicht bin ich ja die Identifizierung eines Problems mit unserem JS-setup). Jede Hilfe äußerst dankbar...
Habe ich setup-Jasmine-tests in Visual Studio mit Jasmin...
//The Jasmine Test Framework
///<reference path="../jquery-1.10.1.js"/>
///<reference path="lib/jasmine-1.3.1/jasmine.css"/>
///<reference path="lib/jasmine-1.3.1/jasmine.js"/>
///<reference path="lib/jasmine-1.3.1/jasmine-html.js"/>
///<reference path="lib/jasmine-jquery.js"/>
///<reference path="lib/mock-ajax.js"/>
//Classes to test
///<reference path="../MyNamespace.Navigation.js"/>
describe("Breadcrumbs", function () {
it("should have a window object", function() {
//this test passes in PhantomJS and the browser
expect(window).toBeDefined();
});
it("should have the base object available", function() {
//this test only passes in the browser
expect(window.MyNamespace).toBeDefined();
});
});
dieser verweist auf eine JS-Datei, die enthält...
(function (app, $, undefined) {
//do things here
}(window.MyNameSpace = window.MyNamespace || {}, jQuery));
Habe ich eine SpecRunner.html die erfolgreich laufen meine tests... es ist das specrunner html-Code, der kommt mit Jasmin 1.3.1 standalone-mit dem Kopf bearbeitet, wie so...
<link rel="stylesheet" type="text/css" href="lib/jasmine-1.3.1/jasmine.css">
<script type="text/javascript" src="../jquery-1.10.1.js"></script>
<script type="text/javascript" src="lib/jasmine-1.3.1/jasmine.js"></script>
<script type="text/javascript" src="lib/jasmine-1.3.1/jasmine-html.js"></script>
<!-- include source files here... -->
<script type="text/javascript" src="../MyNamespace.Navigation.js"></script>
<!-- include spec files here... -->
<script type="text/javascript" src="spec/BreadcrumbsSpec.js"></script>
Diese versuche werden entweder von meinem SpecRunner.html (was gut funktioniert) oder durch Resharper 7s testrunner mit PhantomJS, die ich vermute, ist nicht die Auswertung der code in meinem JS-code-Datei..?
Update: einige zusätzliche details...
Resharper version:
JetBrains ReSharper 7.1.3 Full Edition Build 7.1.3000.2254 auf
2013-04-10T16:48:18
Phantom-JS-version 1.9.1.0
Und ich habe gerade realisiert, dass ich nicht der tatsächliche Fehler in meiner Frage - Doh!
TypeError: 'undefined' is not an object (evaluating 'window.MyNamespace.Whatever') in http://localhost:47815/Tests.js (line 26)
TypeError: 'undefined' is not an object (evaluating 'window.MyNamespace.Whatever')
at BreadcrumbsSpec.js: line 26
at jasmine.js: line 1035
at jasmine.js: line 2053
at jasmine.js: line 2006
at jasmine.js: line 2335
at jasmine.js: line 2053
at jasmine.js:2043
Interessant Tests.js ist nicht meine Datei, ich denke mal, das ist ein R# Ding.
Ah - Tests.js ist meine spec-Datei (D. H. BreadcrumbsSpec.js in dieser Instanz). Wenn ich Start-Schalter Optionen, um zu sagen, Resharper TestRunner einen browser zu benutzen, bekomme ich die gleichen Ergebnisse (z.B. nur Fenster definiert ist) und eine leere Seite im browser...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eureka... das problem war eine ID-zehn-T-andernfalls bekannt als PEBCAK
Ich hatte nicht gedacht, oder untersucht, wie R# wurde eigentlich Los, um die tests auszuführen. Und so hatte die referenzpfade, die in der Spec.js relativ zu meine specrunner.html
R# tatsächlich spritzt die Spec-Datei in eine html-Seite als inline-script, so meine relative Pfade sind alle falsch.
Ich einfach die Referenz-Pfade als absolute, von der Projekt-root, und alles war in Ordnung.
Dank R# Menschen, die für den Eingriff mit mir auf Twitter!