Pregunta

Me gustaría usar votos para probar el código JavaScript sin DOM, idealmente ejecutándose directamente con el JS compilado. Mis votos están escritos en CoffeeScript, pero no estoy seguro de cómo cargar mi JS; He intentado simplemente insertarlo usando 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)

Pero obtengo "referenceError: CL no está definido". Ejecutando el JS minificado y new Cl.LinearExpression(5); En una consola del navegador funciona bien, por lo que el código compilado está bien. ¿Cuál es la mejor manera de cargar JS en el nodo para las pruebas por votos?

¿Fue útil?

Solución 3

Este es un problema de espacio de nombres; importación con

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

Agrega todos los objetos JS compilados al espacio de nombres actual, donde se puede acceder en los votos.

Desafortunadamente, todavía no sé por qué usar eval() o retroceso con el contenido en línea compiled.js no funciona.

Otros consejos

En lugar de usar eval, ¿por qué no usar nodos? require? Puedes señalar cualquiera .js o .coffee Archivo en un directorio relativo, como así:

Cl = require './cl.js'

En ese archivo, agregue la línea

module.exports = Cl

Cuando el archivo es requireD, el valor de retorno del require es el módulo exports.

Puede usar Backtick para incrustar JavaScript As-IS.

`var e=this;function f(a,g){ ... `
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top