실제 spotify계정으로 테스트를 여럿 진행하다보니 해당 계정이 정지 되었다... 따라서 목데이터를 이용해서 테스트하는 방식으로 변경할 것이다.
기존의 코드는 최대한 유지하고 테스트 환경에서만 목데이터를 넘겨주는 라이브러리를 만들 것이다.
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;
기존 api의 결과 값을 json파일로 저장하는 코드를 추가하고 실제로 api를 호출하여 사용했다.
이런식으로 저장된다.
아쉽지만 실제 웹브라우저를 통한 테스트는 불가능해졌다...
개발환경에서 module폴더 안의 파일들이 typescript 문법을 사용할 수 있도록 module
을 추가해준다.
프로덕션 환경에서는 사용하지 않기 때문에 exclude에 module
폴더를 추가해준다.
기존의 테스트 코드가 잘 작동하는 것을 확인 할 수 있다.
spotify-web-api-node
라이브러리에 필요한 기능이라고 판단해 PR작업 중이다. 링크