PayPal クラシック API とやり取りするコードを書いています。このやり取りの最初の部分は、リクエストを PayPal に送信し、PayPal からトークンを取得することです。そのために、単純な https リクエストを使用します。
function makePayPalRequestForToken(options, callback) {
var requestOptions = {
host: config.paypal.endpoint,
path: '/nvp?' + qs.stringify(options),
method: 'GET'
};
var req = https.get(requestOptions, function(res) {
var data = '';
res.on('data', function(chunk) {
data = data + chunk;
});
res.on('end', function() {
callback(null, data);
});
});
req.on('error', function(e) {
callback(e);
});
}
PayPal サンドボックスでは問題なく動作しますが、コードを単体テストしたいのですが、PayPal からの応答を模擬する方法がわかりません。
PayPal からの行応答が次のようになっていることを確認しました。
<Buffer 54 4f 4b 45 4e 3d 45 43 25 32 64 35 44 53 33 38 35 31 37 4e 4e 36 36 37 34 37 33 4e 26 54 49 4d 45 53 54 41 4d 50 3d 32 30 31 35 25 32 64 30 35 25 32 64 ...>
つまり、バイナリデータのように見えます。応答をモックするためにnockを使用したかったのですが、どうすればこれができるのでしょうか? 私の応答のバイナリバージョンで応答をノックする方法は?
私はこのようなことを試しました:
nock('https://' + config.paypal.endpoint)
.filteringPath(function() {
return '/';
})
.get('/')
.reply(200, 'myresponse', {'content-type': 'binary'});
しかし、私は得ています:
キャッチされないエラー: EOF 後の stream.push()
モックされた応答でデータが送信されていないようです。