1

我创建了简单的摩卡测试。当使用 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));
        })
    })
})

好吧,我尝试添加 Chai 而不是断言库。我先安装了它:

npm install chai

所以,我的项目中已经创建了 node_modules 目录。到目前为止很棒。然后,我修改了脚本以使用 Chai:

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);
        })
    })
});

它不起作用,Mocha 测试失败并出现 TypeError:

TypeError: Cannot call method 'equal' of undefined

我认为 Chai 没有定义应该所以它是未定义的。

这怎么可能?

我怎样才能让我的测试用 Chai 运行?我试图在全球范围内安装 Chai,但没有任何效果。我也运行了脚本,-r chai但没有任何效果。

显然,Chai 模块已加载,但未定义变量(Object.prototype 属性)。我怎样才能解决这个问题?

4

1 回答 1

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

这将使您的expect电话正常工作。但是,您也有一个should完全来自不同库的调用,因此请更改

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

expect([1,2,3].indexOf(5)).to.equal(-1);
于 2013-05-01T23:30:10.947 回答