10
jasmine-nodeを使用してノード・サーバーのAPIエンドポイントの背後にあるコントローラ・ロジックをテストしています。ジャスミン・ノード・テストでエラー・ブランチを強制する方法
以下var getSummary = function(req, res) {
var playerId = req.params.playerId;
db.players.getAccountSummary(playerId, function(err, summary) {
if (err) {
logger.warn('Error while retrieving summary for player %d.', playerId, err);
return res.status(500).json({
message: err.message || 'Error while retrieving summary.',
success: false
});
} else {
res.json({success: true, summary: summary});
}
});
};
私は成功しelse
ブロックをテストする方法です:
describe('GET /api/players/:playerId/summary', function() {
it('should return an object summarizing the player account', function(done) {
request
.get('/api/players/' + playerId + '/summary')
.set('Content-Type', 'application/json')
.set('cookie', cookie)
.expect(200)
.expect('Content-Type', /json/)
.end(function(err, res) {
expect(err).toBeNull(err ? err.message : null);
expect(res.body.success).toBe(true);
expect(res.body.summary).toBeDefined();
done();
});
});
});
これはうまく動作しますが、if
ブロックがあるとして貧しい分岐カバレッジを私に残しここでは、このコントローラロジックは、一般的に次のようになりますテストされていません。私の質問は、テストでエラーブロックを実行するにはどうすればいいですか?正しい警告が記録され、正しいデータが返されたことをテストできるように、エラーを返すように設定された応答を嘲笑することはできますか?
参照http://stackoverflow.com/questions/8408033/use-jasmine-to-stub-js-callbacks-based-on-argument-([使用ジャスミンは、引数の値に基づいて、JSコールバックをスタブに]値)。あなたがしようとしているトリックは、モックを作成することです。 –