nestjs api 만들기 2부

JaeGu Jeong·2022년 12월 31일
0

모듈 만들기

nest g mo 명령으로 모듈을 생성한다.
생성된 모듈.ts파일의 controllers필드와 providers필드에 컨트롤러와 서비스 파일을 각각 지정해두면 nestjs는 providers의 서비스를 controller에 inject해준다. 원래 컨트롤러에서 필요한 service코드들이 import가 되어야 controller가 작동하지만 module.ts에서 controller가 필요로하는 로직들을 providers에서 자동으로 import를 하여 주입해주어 번거로운 작업을 단축 시킬 수 있게된다.

express 앱에 접근하기

nestjs는 express와 Fastify를 베이스로 그 위에 추가기능을 넣은 프레임워크이다.
실재로 이 두개의 프레임워크가 동시에 돌아가고 있다. 그러므로 nestjs에서 express의 앱에 접근 할 수 있다.

# controller.ts
...

@Get()
getTitleName(@Req() req, @Res() res) : string {
	return ...
}
...

추가로 nestjs의 베이스에는 Fastify라는 프레임워크도 있기 때문에 express보다 2배 정도빠른 Fastify의 라이브러리로 개발이 가능하다.

e2e, unit 테스트

사용자관점에서 특정 페이지를 테스트한다면 end to end방식을 사용하여 디버깅 할 수 있다.
만약 특정 함수의 동작을 디버깅 하고 싶다면 단위테스트로 진행한다.
nestjs에서는 기본적으로 jest라는 테스터를 기본으로 제공하고 있으므로 개발자는 바로 사용해 볼 수 있다.

jest와 spec.ts로 unit 테스트

앞전의 npm g 명령으로 파일을 생성하면 blabla.spec.ts가 함께 생성이 되는데 describe함수에 테스트 코드를 넣어서 단위테스트를 진행 할 수 있다. 아래는 서비스의 getTitle()을 단위테스트하는 예제.

# movies.service.spec.ts
...
describe('getTitle', () => {
	it('should return a title') () => {
    	service.create({
        	title: 'BicBang'
        	genre: 'SF',
            year: 2012,
        });
        const title = service.getTitle('SF', '2021');
        expect(title).toEqual('BicBang');
    });
});
...
profile
BackEnd Developer

0개의 댓글