tutorial que node instalar ejemplos descargar node.js should.js

node.js - instalar - node js que es



¿Js no puede leer la propiedad ''debería'' de nulo? (5)

Ese es un problema conocido con la librería should : como se extiende el object , por supuesto, solo funciona cuando tienes un objeto concreto. Como null , por definición, significa que no tiene un objeto, no puede llamar a ningún método ni acceder a ninguna de sus propiedades.

Por lo tanto, should no está disponible en este caso.

Básicamente, tienes dos opciones de cómo lidiar con esto:

  1. Usted podría intercambiar actual y expected . De esta forma, siempre que no espere null , tiene un objeto al principio y, por lo tanto, puede acceder a su propiedad should . Pero, esto no es bueno, ya que cambia la semántica y no funciona en todos los casos.
  2. Podría intercambiar la biblioteca should por otra biblioteca de aserciones que no tenga este problema.

Personalmente, node-assertthat opción 2, y mi favorito personal altamente subjetivo para esto es node-assertthat (que ha sido escrita por mí, por lo tanto, es mi favorita).

De todos modos, hay muchas otras opciones, como expect . Siéntase libre de usar cualquiera de estas bibliotecas de afirmaciones que mejor se adapte a su estilo de pruebas de escritura.

Intento utilizar la herramienta de prueba mocha en el nodo. Considere el siguiente escenario de prueba

var requirejs = require(''requirejs''); requirejs.config({ //Pass the top-level main.js/index.js require //function to requirejs so that node modules //are loaded relative to the top-level JS file. nodeRequire: require }); describe(''Testing controller'', function () { it(''Should be pass'', function (done) { (4).should.equal(4); done(); }); it(''Should avoid name king'', function (done) { requirejs([''../server/libs/validate_name''], function (validateName) { var err_test, accountExists_test, notAllow_test, available_test; validateName(''anu'', function (err, accountExists, notAllow, available) { accountExists.should.not.be.true; done(); }); }); }); });

Como resultado de la prueba tengo:

$ make test ./node_modules/.bin/mocha / --reporter list . Testing controller Should be pass: 0ms 1) Testing controller Should avoid name anu 1 passing (560 ms) 1 failing 1) Testing controller Should avoid name anu: Uncaught TypeError: Cannot read property ''should'' of null at d:/townspeech/test/test.spec.js:23:30 at d:/townspeech/server/libs/validate_name.js:31:20 at d:/townspeech/test/test.spec.js:22:13 at Object.context.execCb (d:/townspeech/node_modules/requirejs/bin/r.js:1869:33) at Object.Module.check (d:/townspeech/node_modules/requirejs/bin/r.js:1105:51) at Object.Module.enable (d:/townspeech/node_modules/requirejs/bin/r.js:1376:22) at Object.Module.init (d:/townspeech/node_modules/requirejs/bin/r.js:1013:26) at null._onTimeout (d:/townspeech/node_modules/requirejs/bin/r.js:1646:36) at Timer.listOnTimeout [as ontimeout] (timers.js:110:15) make: *** [test] Error 1

El primer pase sin ninguna complicación, pero el segundo, parece, que no podría adjuntar el módulo shouldjs. ¿Por qué?


Se puede utilizar directamente.

should.not.exist(err);


Siempre encuentro expect funciona mejor con null e undefined siguiente manera:

expect(err).be.null


Una opción más que no veo mencionada aquí:

should(err === null).be.null

En tu ejemplo sería:

should(accountExists).be.null


Yo tuve el mismo problema. Lo solucioné usando:

(err === null).should.be.true;