1

この関数の場所を確認するにはどうすればよいですか: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#copyObject-property

copyObject(params = {}, callback) ⇒ AWS.Request

定義されていますか?

私が試したこと:

var AWS = require('aws-sdk');
AWS.S3.prototype.copyObject
=> undefined

しかし、それは未定義です

この関数を次のようにスタブしたいので、知りたいですproxyquire

 var aws_stub = {};
 var Mover =  proxyquire('../../callback/mover',
                         {'aws-sdk': aws_stub}
                         ).Mover;

 var fake_aws_copyObject = function(params, func){func(null, "succeed")};
     fake_aws_copyObject_stub = sinon.spy(fake_aws_copyObject);
     aws_stub.AWS.S3 ... ??   = fake_aws_copyObject_stub; 
4

1 に答える 1

1

これは、使用する API のバージョンに固有であるため、最初にサービスの新しいインスタンスを作成する必要がありますvar s3 = new AWS.S3();

API を記述したファイルのどこかに生成されたサービスの定義を見つけることができます: aws-sdk/apis/s3-2006-03-01.min.json.

の API ファイルapisが にロードされlib/api_loader.jsます。

これらが実際にプロトタイプに追加されていることがわかりますが、lib/service.jsそれはサービスの新しいインスタンスを作成した後にのみ発生します。

/**
 * Adds one method for each operation described in the api configuration
 *
 * @api private
 */
 defineMethods: function defineMethods(svc) {
     AWS.util.each(svc.prototype.api.operations, function iterator(method) {
         if (svc.prototype[method]) return;
         svc.prototype[method] = function (params, callback) {
             return this.makeRequest(method, params, callback);
         };
     });
 }
于 2015-06-29T14:21:40.317 に答える