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; 

ответ

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); 
     }; 
    }); 
}