본문 바로가기

내일배움캠프 4기 - Node.js

[8 - 2일차] EJS, JEST

EJS

1. EJS 설치하기

EJS는 Embedded JavaScript Template의 약자, 파이썬을 flask 쓸 때 jinja를 사용해서 html에서
파이썬언어를 사용 가능하게 한 것 처럼 데이터를 html에서 바로 사용 가능하도록 보내주는것이다.

npm i ejs

2. EJS 세팅하기

app.js 부분에 

app.set('view engine', 'ejs'); //ejs
app.set('views', './templates'); //템플릿을 불러올 루트폴더 지정

3. EJS 사용하기

res.status(200).json() //이런식으로 하던걸
res.render('사용할 템플릿파일이름', { data: 데이터 });
//이렇게하면 html템플릿이랑, 데이터릉 같이 전송가능하다

아래처럼 html에 데이터 값을 <%= %>로 감싸서 전송가능

함수는 <% %>

<td style="width: 20%"><%= data[i].status %></td>

JEST (테스트코드)

1.  jest 설치하기

npm i jest supertest -D //jest와 supertest 추가

2. package.json 수정하기

아래처럼 하면 npm test 로 테스트 가능

{
...
  "scripts": {
    "test": "jest"
  },
...
}

다양한 방법으로 테스트한다

--forceExit 테스트 검사완료시 강제종료

--silent 콘솔로그같은 메시지 출력x

// package.json

{
  ...

  "scripts": {
    ...

    "test": "jest --forceExit",
    "test:silent": "jest --silent --forceExit",
    "test:coverage": "jest --coverage --forceExit",
    "test:unit": "jest __tests__/unit --forceExit",
    "test:integration": "jest __tests__/integration --forceExit"
  },

  ...
}

3. Jest.config.js 파일 생성

module.exports = {
    // 해당 패턴에 일치하는 경로가 존재할 경우 테스트를 하지 않고 넘어갑니다.
    "testPathIgnorePatterns": ["/node_modules/"],
    // 테스트 실행 시 각 TestCase에 대한 출력을 해줍니다.
    verbose: true,
  }

4. 테스트 코드 파일 생성

테스트할 파일이름.spec.js

5. 테스트 예시

const { isEmail } = require('./validation');

test('테스트가 성공하는 상황', () => {
    expect(isEmail('이메일이 아니에요')).toEqual(false);
});

test('테스트가 실패하는 상황', () => {
    expect(isEmail('my-email@domain.com')).toEqual(true);
});

5. 테스트 진행

 2. package.json 수정하기 로 올라가보면 test:unit 지정한대로 실행됨

npm run test:unit