В моем файле index.js есть следующая функция:
'use strict';
const aws = require('aws-sdk');
exports.getClusterInfo = async function getClusterInfo({p1})
{
const redshift = new aws.Redshift();
var clusters = await redshift.describeClusters({}).promise();
var fltsrtClusters = clusters.Clusters.filter(clust => { return
clust.ClusterIdentifier.includes(p1)}).sort(function(a, b) { return
b.ClusterCreateTime - a.ClusterCreateTime ;});
var retObj = { Value: fltsrtClusters[0].ClusterIdentifier}
return retObj;
}
Теперь мне нужно написать для этого шутливый юнит-тест в index.tests.js
.Я получил это далеко:
jest.mock('aws-sdk');
var aws = require('aws-sdk');
var index = require('../index.js');
const assert = require("chai").assert;
describe('My Tests', () => {
beforeEach(() => {
});
test('test getClusterInfo', async () =>
{
const event = {"p1": 'aws'};
var c = await index.getClusterInfo(event);
expect(c).toBe('aws-something');
});
});
Но тест выдает эту ошибку:
TypeError: redshift.describeClusters is not a function
209 | {
210 | const redshift = new aws.Redshift();
> 211 | var clusters = await redshift.describeClusters({}).promise();
212 | var fltsrtClusters = clusters.Clusters.filter(clust => { return clust.ClusterIdentifier.includes(p1)}).sort(function(a, b) { return b.ClusterCreateTime - a.ClusterCreateTime ;});
213 |
214 | switch (p2)
at Object.getClusterInfo (index.js:211:39)
at Object.test (__tests__/index.test.js:23:29)
console.log src\index.js:9
Функция работает нормально при вызове в обычном контексте.
Я впервые делаю шутки, так что я могу что-то упустить, возможно, не правильно вызвано из теста?
Любой совет / помощь приветствуются.
Спасибо!