【发布时间】:2019-06-19 00:16:47
【问题描述】:
获取源代码(dynamodb.js):
const AWS = require("aws-sdk");
const Promise = require("bluebird");
const client = new AWS.DynamoDB.DocumentClient();
module.exports.db = (method, params) => {
console.log("access dynamodb ");
return Promise.fromCallback(cb => client[method](params, cb));
};
使用看起来像这样的测试(不想模拟 Promise.fromCallback):
describe("test", () => {
const realAWS = require("aws-sdk");
let fakePromise;
let fakeDynamo;
let dbClient;
beforeAll(function() {
fakePromise = jest.fn();
fakeDynamo = {
get: (params, cb) => {
fakePromise(params, cb);
}
};
realAWS.DynamoDB.DocumentClient = jest.fn(() => fakeDynamo);
dbClient = require("../dynamodb");
});
test.only("Test successed", done => {
let result = dbClient.db("get", null);
console.log("access dynamodb ");
expect(fakePromise).toHaveBeenCalled();
});
});
但是当调整测试时,错误被解决了:
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
如果有人可以帮助我?谢谢!
【问题讨论】:
标签: node.js jestjs mocking aws-sdk bluebird