パスポート認証に依存するエクスプレスルータをヘルパーメソッドを呼び出すためにテストするにはどうすればよいですか?パスポート認証でユニットエクスプレスルートを作成する方法
私は単体テストを表現するのが初めてで、実際にはメソッドを呼び出すためにサーバーにヒットするコードをたくさん見てきました。しかし、それは統合テストにはなりませんか?これは最終的には、明示的な単体テストに関するベストプラクティスについての私の理解の欠如に帰着します。
私はパスポートを模倣しようとしましたが、コールバックにアクセスする必要があるため動作しませんでした。私もrewireを使ってみましたが、ヘルパーメソッドをテストしようとしましたが、どちらもうまくいかないようでした。ファイルはmodule.exportでラップされているからです。
ここにお手伝いいただければ幸いです。私はユニットテストにしようとしている
ファイル:またhttps://github.com/num8er/alttab-nodejs-challenge
例を見て、あなたが望むようにそれを実装:
module.exports = function (inject) {
var router = require('express').Router();
var app = inject.app;
return router.get('/', app.passport.authenticate('bearer', { session: false }), [editContentCheck, getUser]);
function editContentCheck(req,res,next) {
if(req.authInfo.scope.indexOf('readOwnUser') == -1) {
res.statusCode = 403;
return res.end('Forbidden');
}
return next();
}
function getUser(req, res) {
var authHeader = req.headers.authorization.split(' ');
var token = authHeader[1];
var models = require('../models');
models.AccessToken.getAccessToken(token,function(err,tokenObj) {
models.User.getUser(tokenObj.userId, function(err, user) {
if (err) { return done(err); }
if (!user) { return done(null, false); }
res.send(JSON.stringify(user));
});
});
}
};
ありがとう、私は本当にこの応答に感謝します。その最後のp.s.このようなものに単体テストを追加する方法はありませんか?私は、サーバーの状態やその他のものとは関係なく、自分のロジックをテストするだけのものを探していました。 – FruitPunchSamurai
希望するとおりに変更してください。あなたのコードの任意の要素を要求し、その機能をチェックすることができます。 – num8er
私はここで何か誤解しているかもしれませんが、パスポートを模倣する方法はありますか?今私はトークンを取得し、上記のトークン変数のためにそれを置く必要があると思う。 – FruitPunchSamurai