2016-06-09 3 views
0

Sorry, ich weiß nicht, ob das eine dumme Frage ist oder nicht, aber ich kann die Antwort nicht finden.Mokka beschwert sich Referenzfehler: URL ist nicht definiert

Ich habe eine reine Funktion in Javascript, das, wenn das Argument prüft eine korrekte URL

isValidUrl(url) { 
    const protocol = new URL(url).protocol; 
    ... 
} 

Der Code im Browser läuft fein ist. Aber ich würde gerne einen Test mit Mocha dafür schreiben. Und Mokka beschwert sich "ReferenceError: URL ist nicht definiert". Bedeutet das, dass serverseitige JS keine URL-Klasse hat? Muss ich etwas wie kopflosen Browser verwenden, um es zu testen?

Vielen Dank.

Antwort

0

Knoten und Freunde, in denen Ihre Tests wahrscheinlich ausgeführt werden, implementieren the ECMAScript (JS) spec. Die URL Klasse ist von this WhatWG spec. Die JS-Spezifikation hat keinen Verweis auf eine URL-Klasse, was Ihr unmittelbares Problem erklärt.

Knoten implementiert auch eigene CommonJS-basierte Module, von denen eines a URL module ist. Es scheint jedoch nicht dieselbe Schnittstelle zu haben.

Die Verwendung von Mocha mit Karma zum Ausführen von Tests in einem kopflosen Browser, wie PhantomJS, ist wahrscheinlich eine bessere Lösung. Sie erhalten eine genaue, wenn auch etwas veraltete Version von Chrom zum Testen. Sie können Karma auch so einstellen, dass andere Browser verwendet werden, sofern diese auf dem Testcomputer verfügbar sind.

+0

Vielen Dank! Ich bin neu in Knoten und vor allem zum Testen. Ich werde versuchen, PhantomJS zu betrachten. – cppcho