当字符串不相等时,Mocha js测试没有显示差异

时间:2015-04-01 09:54:55

标签: javascript node.js unit-testing mocha

我有一个简单的单元测试来断言字符串是正确的,但它只显示失败的测试名称,而不是预期和实际结果的差异。例如,这里有一些愚蠢的测试代码:

describe('stackoverflow', function(){
    it('should be simple', function() {
        var someValue = 'A' + 1 + 2;
        assert.equal('A3', someValue);
    });
});

输出效果不大:

$ mocha

  stackoverflow
    1) should be simple   <--- this line is red

是的,我可以看到哪个测试失败但我不能轻易理解为什么。我希望看到类似的内容:

$ mocha

  stackoverflow
    1) should be simple

       Expected: 'A3'
       Actual  : 'A12'

我有什么问题吗?

1 个答案:

答案 0 :(得分:0)

这是因为我之后又进行了另一次没有设置超时的测试(因为它非常慢)并使用了异步模式,但我没有调用done()

这是test.js,它展示了我所看到的问题(我已经删除了所有不必要的垃圾):

var assert = require("assert");

describe('basic', function(){
    it('should be simple', function() {
        var someValue = 'A' + 1 + 2;
        assert.equal('A3', someValue);
    });
});

describe('slow', function(){
    it('should not explode', function(done) {
        this.timeout(0); // because it takes ages
    });
});

解决方案只是为了确保我在异步测试中调用done():

var assert = require("assert");

describe('basic', function(){
    it('should be simple', function() {
        var someValue = 'A' + 1 + 2;
        assert.equal('A3', someValue);
    });
});

describe('slow', function(){
    it('should not explode', function(done) {
        this.timeout(0); // because it takes ages
        done();
    });
});