오늘은 새해 첫날인 만큼 공부한 내용을 꼭 기록하고 싶었다.
기존에 Udemy에서 NodeJS 수업을 수강했었는데, 끝까지 수강하지 못하고 남겨둔 부분이 있었다. 그 부분을 마저 듣기 위해 수업을 들었는데, 내용은 ExpressJS의 test를 위한 testing framwork Jest에 대한 내용이다.
아래는 수업을 들으면서 간략하게 정리한 내용이고, 자세한 부분이나 궁금한 점은 따로 정리해야 할것 같다...!
NodeJS 를 위한 Test Framework - Jest, Mocha 를 많이 사용한다.
Jest = zero configuration test Framework.
Why test?
- saves time
- creates reliable software
- gives flexibility to developers
- refactorying
- collaborating
- profiling
- peace of mind
const { calculateTip } = require("../src/math")
test("Should calculate total with tip", () => {
const total = calculateTip(10, .3)
if (total !== 13) {
throw new Error(`Total tip should be 13. Got ${total}`)
}
})
Jest에는 Assert 를 위한 library가 있다. --> expect()
expect(value).toBe(target)
testing 통해서 refactoring으로 코드 수정시 기능이 그대로 유지되었는지 검사할 수 있다.
jest --watch: testcode 변경시 자동으로 test 재실행
asynchronous code의 경우 그냥 test()에서 인식하지 못한다. 따라서 extra code통해 async임을 알려줘야한다. callback에 parameter전달한다.
test("Async test demo", (done) => {
setTimeout(()=>{
expect(1).toBe(2)
done() // test code 종료 알려준다.
}, 2000)
})
async/await 을 사용한 syntax의 경우 done을 callback parameter로 전달하지 않아도 된다. await을 jest가 기다림
test('Should add two numbers async/await', async() => {
const sum = await add(10, 22)
expect(sum).toBe(32)
})
app
만 가져와서 test)각각 test() function 실행 전후로 실행됨. 이번 예시에서는 db test시에 test db 비워줄 때 사용함
beforeEach 에서 user 지우고, 테스트용 유저 생성함.
auth 위해서 token 생성도 함.
test('Should get profile for user', async () => {
await request(app)
.get('/users/me')
.set('Authorization', `Bearer ${userOne.tokens[0].token}`) // set Auth header
.send()
.expect(200)
})
jest를 사용해 test run할 때는 필요없는 기능은 실행 되지 않도록.
tests
------|__mocks__
ex) npm module인 @sendgrid/mail 을 사용하는데 이것을 mock 하려면
mocks dir 하위에 @sendgrid directory 생성, mail.js 생성.
mail.js에서 testcase에서 실행될 때 사용되는 function을 test 에서 사용할 기능으로 설정. (빈칸으로 두면 pass)
object 간에 비교할 때 toBe 사용 x ==> {} !== {}
toEqual 사용.
What's Bearer token
?
https://gist.github.com/egoing/cac3d6c8481062a7e7de327d3709505f
위 링크에서Bearer token
에 대한 설명을 볼 수 있었다!