2013-10-04 11 views
43

Sto provando a testare Javascript con moka. Ho questo frammento di codice:Come posso risolvere il messaggio di errore "ReferenceError: expect non è definito"?

describe('Array', function() { 
    describe('indexOf()', function() { 
     it("dovrebbe tornare -1 quando l'elemento non è presente", function() { 
      expect([1,2,3].indexOf(4)).to.equal(-1) 
     }) 
    }) 
}) 

e un file test/array.js. Mocha è stato installato con

$ npm install -g mocha 

Quando eseguo

$ mocha 

ottengo questo errore:

$ mocha 
․ 

0 passing (5ms) 
1 failing 

1) Array indexOf() dovrebbe tornare -1 quando l'elemento non è presente: 
ReferenceError: expect is not defined 
    at Context.<anonymous> (/Users/simonegentili/Desktop/Javascipt Best Practice/test/array.js:4:4) 
    at Test.Runnable.run (/usr/local/lib/node_modules/mocha/lib/runnable.js:211:32) 
    at Runner.runTest (/usr/local/lib/node_modules/mocha/lib/runner.js:358:10) 
    at /usr/local/lib/node_modules/mocha/lib/runner.js:404:12 
    at next (/usr/local/lib/node_modules/mocha/lib/runner.js:284:14) 
    at /usr/local/lib/node_modules/mocha/lib/runner.js:293:7 
    at next (/usr/local/lib/node_modules/mocha/lib/runner.js:237:23) 
    at Object._onImmediate (/usr/local/lib/node_modules/mocha/lib/runner.js:261:5) 
    at processImmediate [as _immediateCallback] (timers.js:317:15) 

risposta

62

Mocha è un test-runner; è necessario fornire il proprio assertion lib come stato https://mochajs.org/#assertions. Pertanto, expect è effettivamente indefinito perché non lo hai mai definito.

(mi raccomando chai)

npm install chai 

poi

(vedi il commento di Amit Choukroune sottolineando effettivamente richiedere chai)

poi

var expect = chai.expect; 
+0

Il 'var aspettano ...' po 'non ha funzionato per me. –

+12

si dovrebbe usare 'var expect = require ('chai'). Expect,' –

+0

o 'const chai = require ('chai')' sopra di esso. – chovy

7

Prova

In primo luogo, nel terminale

npm install expect.js

E nel codice:

var expect = require('expect'); 
-1

Installare Expect.js o Chai.js se si utilizza Mocha per TDD

Quindi, fare npm install expect o npm install chai

-1

Nel mio caso d'uso, stavo correndo una specifica moka attraverso karma. La soluzione era quella di installare i integrazioni karma per la mia prova librerie quadro:

npm install karma-mocha --save-dev 
npm install karma-sinon-chai --save-dev 

... e anche per aggiungere i quadri alla mia karma.conf.js:

module.exports = function(config) { 
    config.set({ 
     browsers: ['Chrome'], 
     frameworks: ['mocha', 'sinon-chai'], 
     files: [ 
      '.tmp/**/*.spec.js' 
     ], 
     client: { 
      chai: { 
       includeStack: true 
      }, 
      mocha: { 
       reporter: 'html', 
       ui: 'bdd' 
      } 
     } 
    }) 
} 

Spero che questo aiuti qualcun altro.

-1

Dopo aver installato Chai come altri posti suggeriscono, con la sintassi ES6 si dovrebbe mettere l'importazione in cima

import {expect} from 'Chai'; 
Problemi correlati