firebase functions 7 spotify mock data

남궁현·2022년 2월 2일
0

Music shorts

목록 보기
7/8
post-thumbnail

실제 spotify계정으로 테스트를 여럿 진행하다보니 해당 계정이 정지 되었다... 따라서 목데이터를 이용해서 테스트하는 방식으로 변경할 것이다.

목표

기존의 코드는 최대한 유지하고 테스트 환경에서만 목데이터를 넘겨주는 라이브러리를 만들 것이다.

SpotifyTestApi 모듈 생성

기능

API호출시 json으로 저장된 mock데이터를 반환해줌

파일 구조

코드

SpotifyWebApi를 상속받아 해당 메서드 호출시 그대로 목데이터를 리턴해줌

// module/SpotifyTestApi/index.ts
/* eslint-disable require-jsdoc */
import SpotifyWebApi from "spotify-web-api-node";

class SpotifyTestApi extends SpotifyWebApi {
  searchTracks(): any {
    return require("./searchTracks_mock.json");
  }
  authorizationCodeGrant(): any {
    return require("./authorizationCodeGrant_mock.json");
  }
  getMe(): any {
    return require("./getMe_mock.json");
  }
  createAuthorizeURL(): any {
    return "https://accounts.spotify.com/authorize";
  }
}

export default SpotifyTestApi;

Mock data 수집

기존 api의 결과 값을 json파일로 저장하는 코드를 추가하고 실제로 api를 호출하여 사용했다.

이런식으로 저장된다.

테스트 코드 변경

아쉽지만 실제 웹브라우저를 통한 테스트는 불가능해졌다...

Tsconfig 수정

tsconfig.dev.json

개발환경에서 module폴더 안의 파일들이 typescript 문법을 사용할 수 있도록 module을 추가해준다.

tsconfig.json

프로덕션 환경에서는 사용하지 않기 때문에 exclude에 module 폴더를 추가해준다.

테스트 실행

기존의 테스트 코드가 잘 작동하는 것을 확인 할 수 있다.

0개의 댓글