Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当字符串不相等时,Mocha js测试不显示差异_Javascript_Node.js_Unit Testing_Mocha.js - Fatal编程技术网

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

Javascript 当字符串不相等时,Mocha js测试不显示差异,javascript,node.js,unit-testing,mocha.js,Javascript,Node.js,Unit Testing,Mocha.js,我有一个简单的单元测试来断言字符串是否正确,但它只显示失败的测试名称,而不是预期结果和实际结果的差异。例如,下面是一些愚蠢的测试代码: describe('stackoverflow', function(){ it('should be simple', function() { var someValue = 'A' + 1 + 2; assert.equal('A3', someValue); }); }); 输出不是很有用: $ moch

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

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

有什么地方我做错了吗?

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

下面是test.js,它演示了我看到的问题(我删除了所有不必要的垃圾):

解决方案只是确保在异步测试中调用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();
    });
});

无论我使用Node自己的断言还是Chai的断言,我都无法重现您报告的问题。在任何一种情况下,我都会得到一个显示预期值和实际值的
AsssertionError
(与您显示的格式不完全相同,但它们仍然存在)。
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
    });
});
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();
    });
});