본문 바로가기

분류 전체보기570

테스트코드 작성 - achievement관련 📌 1. NestJS 의존성 주입 실패 문제🔍 질문UserGuard에서 UserService 의존성을 해결하지 못해 테스트가 실패하는 이유는?💡 해결 방법테스트 모듈에 UserService의 목업(mock) 버전을 제공하거나 UserModule을 임포트하여 의존성을 해결할 수 있습니다.테스트의 격리성과 속도를 위해 목업 사용을 추천합니다.목업 예시providers: [ { provide: UserService, useValue: { findUserById: jest.fn().mockResolvedValue({ id: 1, name: 'Test User' }), }, },]🛠 2. TypeScript 타입 불일치 문제 (sub-achievement.repository.t.. 2025. 3. 7.
테스트코드 만들기 - jest 1. 환경설정Jest 설치npm install —save-dev jest 설치 후 package.json의 scripts 부분에 추가."scripts": {"test": "jest"} 테스트를 실행할 때 명령어.# 전체 테스트 파일 실행npm test # 특정 테스트 파일 실행. 하나만 고르세요npx jest path/to/your-test-file.test.jsnpm test -- path/to/your-test-file.test.js 2. 기본적인 테스트 작성Jest에서는 test 또는 it을 사용해서 테스트를 작성한다. (테스트할 함수)test("테스트 설명", () => {expect("검증 대상").toXxx("기대 결과");});// sum.js (테스트할 함수)function sum(a, b.. 2025. 3. 7.
트렌젝션 적용하는 방법 트렌젝션 적용하는 방법   1. 트랜잭션 적용 요청- 질문: `AchievementPService.post` 메서드에 트랜잭션을 적용해달라는 요청.- 답변: TypeORM의 `QueryRunner`를 사용해 트랜잭션을 구현. `startTransaction`, `commitTransaction`, `rollbackTransaction`을 추가하고, 모든 DB 작업을 트랜잭션 내에서 처리하도록 수정.- 추가 조언: `AchievementPRepository`에 `getQueryRunner()` 메서드가 필요하며, 이를 위해 `DataSource` 주입이 필요함을 언급.  2. `getQueryRunner()` 메서드 추가- 질문: `AchievementPRepository`에 `getQueryRunner(.. 2025. 3. 5.
오늘 물은 내용 -Geoadd데이터 저장할 때 Geoadd데이터 저장할 때 동일한 키에 저장하기// 서브업적 서비스async fillGeo() { // 1. DB에서 모든 서브업적 가져오기 const dbSub: SubAchievement[] = await this.repository.getAll(); if (!dbSub || dbSub.length === 0) { throw new NotFoundException('DB에 서브업적 데이터가 없습니다.'); } for (const sub of dbSub) { const key = `sub-achievement`; const image = typeof sub.sub_achievement_images === 'string' .. 2025. 3. 4.
도커 핑퐁 # redis-cli 127.0.0.1:6379> pingPONG127.0.0.1:6379> 2025. 3. 4.
GEO 발키 사용 import { Injectable, OnModuleDestroy, OnModuleInit } from '@nestjs/common';import Redis from 'ioredis';@Injectable()export class GeoService implements OnModuleInit, OnModuleDestroy { private readonly S_GEO_KEY = 'sub-achievement'; // Valkey 내 Geo 데이터 키 private readonly P_GEO_KEY = 'pinkmong-appear-location'; // Valkey 내 Geo 데이터 키 private readonly client: Redis; constructor() { this.client.. 2025. 3. 4.