Question

Je voudrais utiliser Serment pour tester le code JavaScript sans DOM, idéalement en cours d'exécution directement contre la JS compilé. Mes vœux sont écrits en CoffeeScript, mais je ne suis pas sûr de savoir comment charger mes JS; J'ai essayé juste inline à l'aide eval:

vows = require "vows"
assert = require "assert"
eval('var e=this;function f(a,g){var c=a.split("."),b=e;!(c[0]in b)&&b.execScript&&b.execScript("var "+c[0]);for(var d;c.length&&(d=c.shift());)!c.length&&g!==void 0?b[d]=g:b=b[d]?b[d]:b[d]={}}function h(a){a.call(e)};(function(){var a;a={};h(function(){a=function(a){this.a=a};a.prototype.b=function(a){return this.a+a.a};f("Cl.LinearExpression",a);f("Cl.LinearExpression.prototype.plus",a.prototype.b)})}).call(this);');

vows
  .describe("Linear Expression")
  .addBatch
    "initialized with a number":
      topic: -> new Cl.LinearExpression 5

      "adds up with scalar": (cle) -> assert.equal 7, cle.plus 2

  .export(module)

mais je reçois "ReferenceError: Cl n'est pas défini". Exécution de la JS et new Cl.LinearExpression(5); minified dans une console de navigateur fonctionne très bien, de sorte que le code compilé est correct. Quelle est la meilleure façon de charger JS dans le noeud pour tester par Serment?

Était-ce utile?

La solution 3

Ceci est un problème d'espace de noms; importation avec

codes = require "../out/compiled.js"
for k,v of codes
  global[k] = v

ajoute tous les objets JS compilé à l'espace de noms actuel, où ils sont accessibles profès.

Malheureusement, je ne sais toujours pas pourquoi l'aide eval() ou avec le contenu des accents graves inline de compiled.js ne fonctionne pas.

Autres conseils

Plutôt que d'utiliser eval, pourquoi ne pas utiliser le require de nœud? Vous pouvez pointer vers un fichier de .js ou .coffee dans un répertoire relatif, comme suit:

Cl = require './cl.js'

Dans ce fichier, ajoutez la ligne

module.exports = Cl

Lorsque le fichier est required, la valeur de retour de la require est le exports du module.

Vous pouvez utiliser backtick à javascript Embed tel quel.

`var e=this;function f(a,g){ ... `
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top