![](/img/trans.png)
[英]aws-sdk-mock not mocking when using Typescript and ts-jest
[英]Mocking aws-sdk promises with aws-sdk-mock using jest
你能看到下面的代码并告诉我它有什么问题吗? 代码在5秒后超时,但根据官方说明,我希望它运行得很好。
有谁看到根本错误的是什么?
import * as AWS from "aws-sdk-mock";
import * as _AWS from "aws-sdk";
beforeAll(async (done) => {
//get requires env vars
});
describe("the module", () => {
it("should read from the database", async () => {
AWS.mock('DynamoDB.DocumentClient', 'get', (error, callback) => { callback(null, "got it")});
expect(await (new _AWS.DynamoDB.DocumentClient()).get({TableName:"", Key: {pk: "foo", sk: "bar"}}).promise()).toBe("got it");
});
});
afterAll(() => {
AWS.restore();
});
我终于找到了工作变体:
import * as AWSMock from "aws-sdk-mock";
import * as AWS from "aws-sdk";
import { GetItemInput } from "aws-sdk/clients/dynamodb";
beforeAll(async (done) => {
//get requires env vars
done();
});
describe("the module", () => {
it("should mock getItem from DynamoDB", async () => {
AWSMock.setSDKInstance(AWS);
AWSMock.mock('DynamoDB', 'getItem', (params: GetItemInput, callback: Function) => {
console.log('DynamoDB', 'getItem', 'mock called');
callback(null, {pk: "foo", sk: "bar"});
})
let input:GetItemInput = { TableName: '', Key: {} };
const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
expect(await dynamodb.getItem(input).promise()).toStrictEqual( { pk: 'foo', sk: 'bar' });
AWSMock.restore('DynamoDB');
});
it("should mock reading from DocumentClient", async () => {
AWSMock.setSDKInstance(AWS);
AWSMock.mock('DynamoDB.DocumentClient', 'get', (params: GetItemInput, callback: Function) => {
console.log('DynamoDB.DocumentClient', 'get', 'mock called');
callback(null, {pk: "foo", sk: "bar"});
})
let input:GetItemInput = { TableName: '', Key: {} };
const client = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});
expect(await client.get(input).promise()).toStrictEqual( { pk: 'foo', sk: 'bar' });
AWSMock.restore('DynamoDB.DocumentClient');
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.