0

テストの真新しい。失敗するはずのモカがこのテストに合格する理由を理解しようとしています。

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 に答える