为什么 Mocha 会通过这个 https.get 请求?
Why is Mocha passing this https.get request?
全新的测试。试图弄清楚为什么 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
});
});
});
});
Mocha,就像任何其他[正确编写的]Node.jsmodule/app一样,开箱即用异步运行。因为您的 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();
});
});
});
});
全新的测试。试图弄清楚为什么 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
});
});
});
});
Mocha,就像任何其他[正确编写的]Node.jsmodule/app一样,开箱即用异步运行。因为您的 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();
});
});
});
});