在摩卡testing中没有发现柴的出口

我已经创build了简单的摩卡testing。 当使用Node“assert”模块时,它完美地工作。 我从命令行(Mocha作为全局节点模块安装)运行它:

$ mocha myTest.js ․ 1 test complete (6 ms) 

该脚本如下所示:

 var assert = require("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(5)); assert.equal(-1, [1,2,3].indexOf(0)); }) }) }) 

那么,我试图添加柴而不是断言库。 我先安装它:

 npm install chai 

所以,在我的项目中创build了目录node_modules。 太好了。 然后,我改变了脚本使用柴:

 var chai = require("chai"); describe('Array', function(){ describe('#indexOf()', function(){ it('should return -1 when the value is not present', function(){ [1,2,3].indexOf(5).should.equal(-1); expect([1,2,3].indexOf(5)).to.equal(-1); assert.equal([1,2,3].indexOf(5),-1); }) }) }); 

它不起作用,摩卡testing失败TypeError:

 TypeError: Cannot call method 'equal' of undefined 

我认为柴没有定义,所以它是不确定的。

这怎么可能?

我怎样才能使我的testing与柴运行? 我试图安装柴全球没有任何效果。 我也用-r chai运行脚本,也没有效果。

显然,Chai模块被加载,但没有定义variables(Object.prototype属性)。 我怎样才能解决这个问题?

 var expect = require('chai').expect; 

这将使您的expect呼叫工作。 然而,你也有一个should来自不同的图书馆完全来自,所以改变

 [1,2,3].indexOf(5).should.equal(-1); 

 expect([1,2,3].indexOf(5)).to.equal(-1);