J'essaie de tester Javascript avec mocha. J'ai cet extrait de code:
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)
})
})
})
et un test/array.js
fichier. Mocha a été installé avec
$ npm install -g mocha
Quand je cours
$ mocha
Je reçois cette erreur:
$ 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)
Mocha est un cadre de test; vous devez fournir votre propre bibliothèque d'assertion sous la forme https://mochajs.org/#assertions . Ainsi, expect
n'est en effet pas défini car vous ne l'avez jamais défini.
(Je recommande chai )
npm install chai
puis
(voir le commentaire d'Amit Choukroune soulignant qu'il faut réellement chai)
puis
var expect = chai.expect;
Essayer
Tout d'abord, dans le terminal
npm install expect.js
Et dans votre code:
var expect = require('expect');
let chai = require('chai');
var assert = chai.assert;
describe('Array', function() {
describe('#indexOf()', function() {
it('should return -1 when the value is not present', function() {
assert.equal(-1, [1, 2, 3].indexOf(4));
});
});
});
Après avoir installé Chai comme d'autres articles le suggèrent, avec la syntaxe es6, vous devez placer l'importation en haut
import {expect} from 'Chai';
Afin d'exposer expect
globalement, lors de l'utilisation de chai
, les éléments suivants doivent être chargés au moyen de la configuration de votre bibliothèque de test préférée:
require('chai/register-assert'); // Using Assert style
require('chai/register-expect'); // Using Expect style
require('chai/register-should'); // Using Should style
Par exemple:
npx mocha --config .mocharc.js *.spec.js
Dans mon cas d'utilisation, j'exécutais une spécification de moka via karma
. La solution a été d'installer les intégrations karma pour mes bibliothèques de framework de test:
npm install karma-mocha --save-dev
npm install karma-sinon-chai --save-dev
... et aussi pour ajouter les frameworks à mon 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'
}
}
})
}
J'espère que ceci aide quelqu'un d'autre.
Installez Expect.js ou Chai.js si vous utilisez Mocha pour TDD
Alors faites npm install expect
ou npm install chai
Soit ajoutez cette balise de script dans le fichier html
<script src="https://unpkg.com/expect@%3C21/umd/expect.min.js"></script>
ou installer le package
npm install chai or expect