aws-sdk-mock을 사용하여dynamo를 테스트하는 방법

9346 단어 Node.jsAWS
입사한 지 1년이 다 되어가는데 드디나모 주위의 시험을 쓰고 싶어요.
지금까지dynamo 주위의 시험은 정식표를 보러 가는 것이 좋지 않고, 시험도 잘 쓰지 못해서, 시험 볼 때dynamoDB local을 준비하는 것이 매우 번거롭다...이렇게 많은 핑계를 대고 게으름을 피웠어요.aws-sdk-mock이라는 물건이 있어서 썼어요.
이번 시험에는ava를 썼어요.

테이블 컨텐트


이번 시위의 책상 위에 모임의 열쇠가 하나 있다.구조는 다음과 같다.
그리고 하고 싶은 일은 지정된 사용자 ID의 이름과 나이를 얻는 것이다.
user_id
name
age
1
yamada
18
2
suzuki
20

정식 공연의 코드


models/demo.js
const AWS = require("aws-sdk");
class Users {
    constructor() {
    this.table = "demo";
    this.dynamodb = new AWS.DynamoDB.DocumentClient({
      region: "ap-northeast-1"
    });
  }

  getData(userId){
    const params = {
      TableName: this.table,
      Key: {
        id: userId
      }
    };
    return new Promise((resolve, reject) => {
      this.dynamodb.get(params, (err, data) => {
        if (err) {
          console.error(err);
          return reject(err);
        } else {
          return resolve(data.Item);
        }
      });
    });
  }
}

테스트 코드


tests/user.test.js
const test = require("ava");
const aws = require("aws-sdk-mock");
const path = require("path");
const testUserId = "1";
const Users = require("../../models/demo");

let allUserObj = {};
aws.setSDK(path.resolve("node_modules/aws-sdk"));

test.serial("prepare aws-sdk-mock environment", t => {
  aws.mock("DynamoDB.DocumentClient", "get", function(params, callback) {
    callback(null, { Item: { user_id: params.Key.user_id, name:"yamada", age:18 } });
  });
  allUserObj = new Users();
  t.pass();
});

test.serial("get user info", t => {
  const ansData = {
    user_id: "1",
    name: "yamada",
    age: 18
  };
  return allUserObj.getData(testUserId).then(data => {
    t.is(ansData, data);
  });
});

콜백의 두 번째 매개 변수 부분에 표에 임시로 저장된 데이터를 지정합니다.get뿐만 아니라 scan도 같은 요령이다.query도.scan과query에 관해서는 여러 Items의 내용을 넣어야 하기 때문에 좀 번거롭습니다...
✔ models › demo › prepare aws-sdk-mock environment
✔ models › demo › get user info
무사히 통과했다.
이로써 현지에서dynamo의 테스트를 진행할 수 있기 때문에 정식 경기표에 영향을 미칠 염려도 없고 사용료를 받을 염려도 없어 안심하고 테스트를 진행할 수 있다.
앞으로 시험은 더욱 적극적일 것이다.

참고 자료

좋은 웹페이지 즐겨찾기