Chai 的断言无法正常工作

Chai's Assert Not Working Properly

我正在使用 Chai 的断言来检查 return 从我创建的服务器发出的响应值。但是,即使传递给它的值不相等,assert 也是 returning true。 让我举个例子:

describe('Tests', function() {
    it('Simple Query', function() {

        // assert.equal(2,3); //returns false

        controller1.simpleQuery(true, 4, "hello", null, function(error, response, context) {

            assert.equal(2,3); //returns true

        });

    });
});

好的,问题来了:这段代码中的两个 assert 语句都应该 return false 因为 2 不等于 3。但是,现在 simpleQuery() 函数调用之前的 assert 语句是 returning false(这是正确的行为)。 simpleQuery() 调用中的断言语句 return 为真。

老实说,这真的很奇怪,我似乎无法弄清楚为什么要这样做。谁能帮我解决这个问题?

问题是您的 simpleQuery 是异步的。结果,测试将在甚至调用回调之前完成。您需要使用 done 回调来显示 mocha 您的测试是异步的。

describe('Tests', function() {
    it('Simple Query', function(done) {

        // assert.equal(2,3); //returns false

        controller1.simpleQuery(true, 4, "hello", null, function(error, response, context) {

            assert.equal(2,3); //returns true
            done();

        });

    });
});