3
私はテストしたい認証ミドルウェアを持っています。ミドルウェアは認証サービスへの外部呼び出しを行い、返されたstatusCodeに基づいて次のミドルウェア/コントローラを呼び出します。 401
ステータス。私が下にあるもののようなもの。NodeJS:外部呼び出しを行うミドルウェアをテストする方法
var auth = function (req, res, next) {
needle.get('http://route-auth-service.com', options, function (err, reply) {
if (reply.statusCode === 200) {
next();
} else {
res.statusCode(401)
}
})
}
は、私はテストのためSinonJS
、nock
、およびnode-mocks-http
を使用して、私の簡単なテストは以下のとおりです。
// require all the packages and auth middleware
it('should login user, function (done) {
res = httpMocks.createResponse();
req = httpMocks.createRequest({
url: '/api',
cookies: {
'session': true
}
});
nock('http://route-auth-service.com')
.get('/')
.reply(200);
var next = sinon.spy()
auth(res, req, next);
next.called.should.equal(true); // Fails returns false instead
done();
});
テストは常に失敗し、falseを返し、私は針の呼び出しは非同期であり、そして呼び出しが戻る前に、アサーションの部分に到達するための理由があると感じています。私は一日中これに取り組んできました。私は助けてください。
おかげ@Derickベイリーから離れたテスト・セットアップを分割する必要がある、私は本当に感謝し、私はより多くの私はほとんど本を読んでいるよりも、SO、それが動作する上で質問を学んできたことがわかりちょうど私がそれを望むように。 –
返されたステータスコードが200ではない場合に問題をテストしていますが、どうすればよいですか? –