私は現在、バイナリ文字列を受け取ることにより、ファイルのアップロードが必要な nodejs と restify を使用した小さな API に取り組んでいます。
方法がわからないのは、モカでテストすることです。そのため、検索を行っていて、スタック オーバーフローでこれを見つけました。モカを使用したユニット テスト ファイルのアップロードです。これは良いスタートですが、マルチパート フォームを送信するため機能しません。クライアントがAPIで送信する必要があるのは、ストリームとしてのファイルです。
ここに私のコントローラーがあります:
exports.uploadVideo = function(req, res, next) {
var video = "public/video/" + req.params.videoId + ".mp4",
util = require('util'),
exec = require('child_process').exec;
var newFile = fs.createWriteStream("./uploads/" + video);
req.pipe(newFile);
req.on('end', function () {
var cmd = 'qtfaststart ' + './uploads/' + video;
var qtfaststart = exec(cmd, function(error, stdout, stderr){
if (error === "atom not found, is this a valid MOV/MP4 file?\n" || error !== null) {
return next(new restify.ConflictError("Error: " + stdout));
} else {
fs.chmodSync('./uploads/' + video, '644');
Video.findOne( { _id: req.params.videoId }, function(err, video) {
if (err) return next(new restify.ConflictError(err));
if (!video) {
newVideo = new Video({
_id: req.params.videoId,
file: video});
newVideo.save()
} else {
video.file = video;
video.increment();
video.save();
}
});
}
});
});
req.on('error', function(err){
return next(new restify.NetworkConnectTimeoutError(err));
});
};
ストリーム (バイナリ ファイル) を受信し、ストリームをバックエンドにまとめるこのコントローラーが与えられた場合、このコントローラーを mocha でテストするにはどうすればよいでしょうか?