Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AWS Lambda中的嘲笑_Javascript_Node.js_Amazon Web Services_Testing_Aws Lambda - Fatal编程技术网

Javascript AWS Lambda中的嘲笑

Javascript AWS Lambda中的嘲笑,javascript,node.js,amazon-web-services,testing,aws-lambda,Javascript,Node.js,Amazon Web Services,Testing,Aws Lambda,我有一个简单的AWS Node.js Lambda,我想用mock测试它: //SimpleLambda.js var AWS = require('aws-sdk'); exports.handler = function(event, context) { var name = getName(); context.succeed(name); }; function getName() { return 'David'; } 我已经安装了mocha和simple moc

我有一个简单的AWS Node.js Lambda,我想用mock测试它:

//SimpleLambda.js

var AWS = require('aws-sdk');

exports.handler = function(event, context) {
  var name = getName();
  context.succeed(name);
};

function getName() {
  return 'David';
}
我已经安装了
mocha
simple mock
,但我无法使其正常工作:

//test.js

//Mocha
var assert = require('assert');
//Chai
var chai = require('chai');
var expect = chai.expect;
var should = chai.should();
//Simple-Mock
var simple = require('simple-mock');
//Lambda
var lambda = require('../SimpleLambda');

describe('SimpleLambda tests', function() {
  describe('Get name', function() {

    beforeEach(function() {
      simple.mock(lambda, 'getName');
    });

    it('should return \'Tim\' when the mocked with simple-mock', function() {
      lambda.getName.returnWith('Tim');

      var context = {
        invokeid: 'invokeid',
        succeed: function(result) {
          expect(result).to.equal("Tim");
          return result;
        }
      };

      lambda.handler({}, context);

    });
  });
});
输出仍然建议
getName
返回“David”

  SimpleLambda tests
    Get name
      1) should return 'Tim' when the mocked with simple-mock


  0 passing (11ms)
  1 failing

  1) SimpleLambda tests Get name should return 'Tim' when the mocked with simple-mock:

  AssertionError: expected 'Succesfully retrieved: David' to equal 'Tim'
  + expected - actual

  -Succesfully retrieved: David
  +Tim

  at Object.context.succeed (test/test.js:27:29)
  at Object.exports.handler (SimpleLambda.js:5:11)
  at Context.<anonymous> (test/test.js:32:14)
SimpleLambda测试
得名
1) 当使用simple mock进行模拟时,应返回'Tim'
0通过(11ms)
1失败
1) SimpleLambda tests Get name在使用simple mock进行模拟时应返回“Tim”:
AssertionError:预期“成功检索:David”等于“Tim”
+预期-实际
-成功检索:David
+提姆
在Object.context.success(test/test.js:27:29)
在Object.exports.handler(SimpleLambda.js:5:11)
在上下文中。(test/test.js:32:14)

这可以做到吗?

试着把
simple.mock(lambda,'getName').returnWith('Tim')
to
beforeach
并删除此
lambda.getName.returnWith('Tim')

您需要导出
getName
函数,以便可以从test.js访问它(并且可以由模拟库包装)

大概是这样的:

//SimpleLambda.js

var AWS = require('aws-sdk');

exports.handler = function(event, context) {
 var name = exports.getName();
 context.succeed(name);
};

exports.getName = function (){
  return 'David';
}