Open yunjin5450 opened 1 year ago
저희 지금 클래스 exports 하는 부분 보면 module.exports = new GameRepo()
이렇게 해서 인스턴스를 만들어서 그걸 내보내는 식으로 되어있는데 거기 부분을 module.exports = GameRepo
이렇게 내보내보고 시도해보면 어떨까요?
저희 지금 클래스 exports 하는 부분 보면
module.exports = new GameRepo()
이렇게 해서 인스턴스를 만들어서 그걸 내보내는 식으로 되어있는데 거기 부분을module.exports = GameRepo
이렇게 내보내보고 시도해보면 어떨까요?
그 첫번째 시도 방안 에서 let gaemRepo = new GameRepo()
대신 this.gameRepo = new GameRepo()
이렇게요 !
이 방법도 해봤었는데요! 결과는 같았습니다.😥
방안이라기보다는.. 궁금한 점이 있습니다.
이렇게 하셨는데 사실 User 스키마는 GameRepo 내의 메소드가 아니라 User를 따로 임포트해서 사용해야 하는 모듈이 아닐까 생각되어서요... 게임 레포 내에서도 GemeRepo.User 이렇게 사용하지는 않으니까...
저는 User 모델 자체는 따로 임포트하고 그 모듈 내의 함수들을 목함수로 대체해서 테스트를 했거든요!
이런 식으로요 👇🏻
mockCreate = jest.fn()
mockCreate.mockreturnValue(value)
User.create = mockCreate
또는
mockCreate = jest.spyOn(User, 'create');
User.create.mockResolvedValue(value);
테스트코드
한 일
게임 로직 테스트 코드를 작성했습니다.
에러 내용
방안1
game-repo.js파일에서 module.exports = GameRepo; 로 변경하여 설정하면 테스트 코드는 잘 돌아갑니다. 하지만
game-socket.js -> game-provider.js -> game-repo.js
에서 계층끼리 데이터 전달이 되지 않는 상황이 발생했습니다. 제 생각 이지만 game-socket.js에서 class설정을 못해서 일어나는 상황 같습니다. gmae-provider.js -> game-repo.js 에서는 데이터 전달이 되는데 game-socke.js -> game-provider.js로 데이터 전달이 되지 않습니다.방안2
우리가 모듈 내보내는 방식 그대로 적용하고 테스트 코드를 연결해 보았습니다.
game-socket.js -> game-provider.js -> game-repo.js
계층끼리 데이터 전달이 잘 됩니다. 하지만 테스트 코드에서 함수를 찾을 수 없다고 뜹니다. 생각 나는 방안으로 가짜 함수를 만들어서도 적용해 봤으나 해결 하지 못 했습니다.조치 사항
4~5시간 동안 모듈 연결과 테스트 코드 두 개 다 연결 하는 방안을 찾아 봤고, 구글에서도 소켓 연결 모듈 방식을 검색하며 찾아봤지만 다른 수확이 없었습니다. 방안2로 하여 game-repo.js와 연결하여 테스트 해봤는데 제가 테스트 하고자 한 것은 돌아가는 걸 확인했습니다.
지금 테스트 코드가 중요한 건 아니라고 판단되어 일단 게임 로직 테스트 코드 연결 방안은 조금 미뤄둬도 무방할 것 같습니다. 혹시 제 이슈를 읽고 좋은 방안이 생각나시는 분 계신다면 시간 날 때 같이 문제 해결해도 좋을 것 같습니다.
환경 설정