Wie kann ich eine lokale JavaScript-Datei mit einer Remote-URL testen? Daran habe ich jetzt schon ein paar Tage gearbeitet, kann es aber noch nicht genau sagen.Unit testet eine lokale JavaScript-Datei gegen eine Remote-URL
Ich habe eine lokale Datei, mit der Manipulation DOM, wie ein app.js
genannt, die enthält:
document.querySelector('p').textContent = 'This is a test.';
Wie kann ich das dann testen gegen eine Remote-URL, wie http://example.com/, dass der Code erfolgreich, um sicherzustellen, läuft? Die URL ist keine, die ich kontrolliere. Vielleicht wäre eine Lösung, die Selenium enthält, am sinnvollsten, aber ich bin mir nicht sicher, wie ich meine lokale JS-Datei auch gegen die Remote-URL ausführen würde.
Wie mit diesem Pseudo-Code:
openUrl('http://example.com/', function() {
inject('./app.js');
element = document.querySelector('p');
assertEquals('This is a test.', element.textContent);
});
Ich versuchte Casper JS mit (basierend weg von Phantom JS) und das war der vielversprechendsten, aber nicht für den DOM wartet Laden zu beenden, bevor Assertions ausführen, also alles, was in einem jQuery $ (document) .ready() - Block ist, wird noch nicht ausgeführt.
Hier ist, was ich bisher in Casper JS bekam; Die zweite Assertion schlägt fehl, weil sie in einem ready() - Block ausgeführt wird.
// app.js
$ = require('jquery');
$('p').first().text('test');
$(document).ready(function() {
$('h1').text('one');
});
Und:
// test.js
var url = 'http://example.com/';
var script = 'Example/app.js';
casper.test.begin('Test', function suite(test) {
casper.start(url, function() {
casper.page.injectJs(script);
// 'test' was added immediately, in app.js. This succeeds.
test.assertTextExists('test');
// 'one' runs in a $(document).ready() block. This assertion fails.
test.assertTextExists('one');
});
casper.run(function() {
test.done();
});
});
Was auf der Erde tut * "gegen eine Remote-URL" * bedeuten? –
Eine URL, die nicht auf meinem eigenen Computer ist, also nicht localhost. – Gary
http://jasmine.github.io/2.4/introduction.html –