0

全新的测试。试图弄清楚为什么 mocha 在它应该失败的时候通过了这个测试。

var assert     = require('assert');
var nock       = require('nock');
var https      = require('https');

describe('thing', function() {
    describe('foo', function () {
        it('makes the correct https call to API', function () {
            nock('https://example.com')
                .get('/foo')
                .reply(404);
            https.get('https://example.com/foo', function (response) {
                console.log(response.statusCode); // returns 404
                assert.equal(response.statusCode, 200); //passes
            });
        });
    });
});

在此处输入图像描述

4

1 回答 1

2

Mocha,就像任何其他 [正确编写的] Node.js 模块/应用程序一样,开箱即用地异步运行。因为你的 https 调用比整个 Mocha 测试执行的时间更长,所以 Mocha 永远没有机会在过程完成之前执行它的断言。

也就是说,Mocha 测试还支持回调,让您在执行断言之前执行长时间运行的活动:

var assert     = require('assert');
var nock       = require('nock');
var https      = require('https');

describe('thing', function() {
    describe('foo', function () {
        it('makes the correct https call to API', function (done) {
            nock('https://example.com')
                .get('/foo')
                .reply(404);
            https.get('https://example.com/foo', function (response) {
                console.log(response.statusCode); // returns 404
                assert.equal(response.statusCode, 200); //passes
                done();
            });
        });
    });
});
于 2015-08-21T01:09:46.623 回答