Выполнение модульного тестирования mocha и chai для узла js, который должен запрашивать у dynamicodb - PullRequest
0 голосов
/ 04 декабря 2018

Привет, я новичок в модульном тестировании AWS DynamdoDB и Mocha Chai.

Я хотел создать модульное тестирование узла js с mocha и chai.В моем test.js мне нужно получить ожидаемый результат от AWS DynamoDB.Однако я не уверен, как это сделать.

в моем test.js

var assert = require('chai').assert;

describle('querying items from dynamodb', function(){
     it('find date in Month collection', function(){

 //not sure how should i put my inputs in here.
      });

   })

У вас есть какие-нибудь статьи или ресурсы, на которых я должен прочитать?

1 Ответ

0 голосов
/ 14 мая 2019

Если вы хотите сделать фактические вызовы в AWS DynamoDB, простой способ сделать это будет следующим (на основе документации, найденной для DynamoDB и DynamoDB.DocumentClient ):

const assert = require('chai').assert;
const AWS = require('aws-sdk');

describe('querying items from dynamodb', function(){
  it('find date in Month collection', function(done){

    var params = {
      TableName : <TEST_TABLE_NAME>,
      Key: {
        <PRIMARY_KEY>: <TEST_KEY_VALUE>
      }
    };

    var expectedDate = <EXPECTED_VALUE>;
    var documentClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});
    documentClient.get(params, function(err, data) {
      assert.strictEqual(data.Item.Date, expectedDate);
      done();
    });
  });
});

НО ПОКУПАТЕЛЬ ОСТОРОЖНО!Это будет делать звонки на ваш фактический DynamoDB и AWS может взимать с вас деньги!Чтобы избежать этого, настоятельно рекомендуется издеваться.Ложные звонки на вашу DynamoDB могут быть выполнены с помощью следующего кода (на основе документации, найденной на github , npmjs.com и npmdoc.github.io ):

const assert = require('chai').assert;
const AWS = require('aws-sdk');
const MOCK = require('aws-sdk-mock');

describe('querying items from dynamodb', function(){

  before(() => {
    // set up a mock call to DynamoDB
    MOCK.mock('DynamoDB.DocumentClient', 'get', (params, callback) => {
      console.log('Let us not call AWS DynamoDB and say we did.');

      // return fake data
      let fakeData = {
        Item: {
          Date: <FAKE_DATE>
        }
      };

      return callback(null, fakeData);
    });
  });

  after(() => {
    // restore normal function
    MOCK.restore('DynamoDB.DocumentClient');
  });

  it('find date in Month collection', function(done){

    // set up the call like it's real
    var params = {
      TableName : <TEST_TABLE_NAME>,
      Key: {
        <PRIMARY_KEY>: <TEST_KEY_VALUE>
      }
    };

    var expectedDate = <EXPECTED_VALUE>;
    var documentClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});
    documentClient.get(params, function(err, data) {
      // data should be the fake object that should match
      assert.strictEqual(data.Item.Date, expectedDate);
      done();
    });
  });
});
...