Как издеваться над AWS Redshift с помощью Jest? - PullRequest
0 голосов
/ 14 сентября 2018

В моем файле 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

Функция работает нормально при вызове в обычном контексте.

Я впервые делаю шутки, так что я могу что-то упустить, возможно, не правильно вызвано из теста?

Любой совет / помощь приветствуются.

Спасибо!

...