node.js - 如何用 Jest 模拟 AWS Cognito CognitoIdentityServiceProvider?
问题描述
我正在尝试编写单元测试,我需要模拟来自 cognito 服务的方法响应 - CognitoIdentityServiceProvider
我有以下工作代码调用该adminInitiateAuth
操作
import * from AWS from 'aws-sdk'
const cognito = new AWS.CognitoIdentityServiceProvider();
const response = await cognito.adminInitiateAuth(expectedParams).promise();
// main functionality I want to test
我想有一个规范,我试图模拟这个服务作为先决条件
const mockResponse = {
AuthenticationResult: {
AccessToken: 'expected-token'
}
}
jest.mock('aws-sdk', () => {
return {
CognitoIdentityServiceProvider: {
adminInitiateAuth: () => {
return mockResponse;
}
}
}
});
这给我一个错误
AWS.CognitoIdentityServiceProvider is not a constructor
这怎么不能是构造函数?你有什么想法如何模拟它吗?
解决方案
我想到了。它可能对某人有用
jest.mock('aws-sdk', () => {
return {
CognitoIdentityServiceProvider: class {
adminInitiateAuth() {
return this;
}
promise() {
return Promise.resolve(mockResponse);
}
}
}
});