테스트주도개발(TDD)로 만드는 NodeJS API 서버

테스트주도개발(TDD)로 만드는 NodeJS API 서버

(55개의 수강평)

758명의 수강생
29,700원
지식공유자 · 김정환
60회 수업 · 총 3시간 49분 수업
평생 무제한 시청
수료증 발급 강의
수강 난이도 '중급'
이충만 프로필

혹시 이 부분은 nodejs만의 특징인가요? 이충만 1달 전

아니면 혹시 자바스크립트의 특징으로 보아도 무방할까요?

0
Dot Support 프로필

HTTP Request 값이 2초가 넘어 갈때의 해결법 Dot Support 4달 전

Get요청으로 해당 HTTP를 긁어오는 테스트를 하려고 하는데 모카 테스트에서 2초가 넘어갔다는 이유로 계속 실패합니다. 해결방법이 있나요?

1
오형원 프로필

동영상 재생이 원활하지 않은데요? 20초 간격으로 끊겨서 30초 정도 기다리면 진행이 되네요??? 동영상 재생이 원활하지 않은데요? 20초 간격으로 끊겨서 30초 정도 기다리면 진행이 되네요??? 오형원 5달 전

동영상 재생이 원활하지 않은데요? 20초 간격으로 끊겨서 30초 정도 기다리면 진행이 되네요??? 

0
오형원 프로필

동영상 재생이 원활하지 않은데요? 20초 간격으로 끊겨서 30초 정도 기다리면 진행이 되네요??? 오형원 5달 전

동영상 재생이 원활하지 않은데요? 20초 간격으로 끊겨서 30초 정도 기다리면 진행이 되네요??? 

0
Jiwon 프로필

Wrapping 의 뜻이 잘 이해가 안 갑니다. Jiwon 6달 전

app.get('/', function(req, res){

res.send('Hello World!');

});

 

이 부분에서 http 의 req, res를 한번 wrapping 한 express의 객체라고 하셨는데

그 의미가 이해가지 않습니다 ㅜㅜ 

1
참참이 프로필

spec 파일이 여러 개 일 때! 참참이 8달 전

패쓰가 늘어나면서 spec 파일도 늘어났을 때

파일들의 관리와 테스트 수행은 어떻게 하나요?

1
엄창용 프로필

TDD 슈퍼테스트2 강의 중 엄창용 8달 전

이리저리 찾아보는데도 모르겠어서 질문드립니다.

모듈에서 가져온 기능을 못 찾는 거 같은데 원인을 모르겠습니다ㅠㅠ

Web Strom을 사용하고 있습니다.

1) GET /users는

...:

TypeError: app.daddress is not a function

at Test.serverAddress (node_modulessupertestlibtest.js:55:18)

at new Test (node_modulessupertestlibtest.js:36:12)

at Object.obj.(anonymous function) [as get] (node_modulessupertestindex.js:25:14)

at Context.it (index.spec.js:7:14)

//index.js

const express = require('express');

const morgan = require('morgan');

const app = express();

const users = [

{id: 1, name: 'alice'},

{id: 2, name: 'bek'},

{id: 3, name: 'mike'}

];

app.use(morgan('dev'));

app.get('/', function (req, res){

res.send('Hello World!');

});

app.get('/users', function (req,res) {

res.json(users);

});

app.post('/users', function (req,res) {

res.send(user)

});

app.listen(3000, function(){

console.log('Example app listening on port 3000!');

});

module.exports = app;

//index.spec.js

const app = require('./index');

const request = require('supertest');

describe('GET /users는', ()=>{

it('...', (done)=>{

request(app)

.get('/users')

.end((err, res)=>{

console.log(res.body);

done();

})

})

})

2
Julio 프로필

모듈별 테스트 파일들이 많아질 경우, 일괄 테스트 진행할때에는 어떻게 처리하나요? Julio 2018.12.13

모듈별 테스트 파일들이 많아질 경우, 일괄 테스트 진행할 때에는 어떻게 처리하나요?

build 시점에 테스트를 선행해서 문제가 없을 경우 빌드되도록 연계하고 싶을때에는 어떻게 처리하는지도 궁금합니다.

0
Julio 프로필

supertest 관련 코드를 작성하고 mocha로 테스트를 돌린 이후에 Julio 2018.12.12

supertest 관련 코드를 작성하고 mocha로 테스트를 돌린 이후에

프로세스가 종료가 안되고 대기상태로 남아있는데 어떤 부분을 의심해 보면 좋을까요?

1
Julio 프로필

Mocha + Should vs Jasmine Julio 2018.12.12

Jasmine의 경우엔 테스트 러너와 검증을 같이 제공하는것 같은데,

실무환경에서는 Mocha + Should 와 Jasmine 중 어떤것을 많이 사용하는지 궁금합니다.

많이 사용하는 이유가 있다면 이유도 궁금하고요..

0
geundragon 프로필

In Memory DB 관련 질문드립니다~! geundragon 2018.11.06

안녕하세요 강사님 세션을 저장할때 In Memory DB를 사용하면 좋다고 말씀하셨는데,

1.그럼 서버를 재구동하면 세션정보는 다 날아가는건가요?!

  1. 간단한 사이트를 운영하는데 서버쪽 소스를 수정하면 업데이트 하기위해서 매번 서버를 재구동시키는데, 좋지 않은 방법인가요? 라우팅정보만 수정하는 로직을 만들어서 그것만 실행시키는게 좋을까요?

1
Gichul Roh 프로필

강의를 보면서 입력한 코드는 전부 맞는 것 같은데, 에러가 하나 떠서요 Gichul Roh 2018.10.06

PUT /users/3 404 0.752 ms - -

1) 변경된 name을 응답한다

1) PUT /users/:id
성공시
변경된 name을 응답한다:

Uncaught AssertionError: expected Object {} to have property name

```app.put('/users/:id', (req, res) => {
const id = parseInt(req.params.id, 10);
if (Number.isNaN(id)) return res.status(400).end();

const name = req.body.name;
if (!name) return res.status(400).end();

const isConflict = users.filter(user => user.name === name).length;
if (isConflict) return res.status(409).end();

const user = users.filter(user => user.id === id)[0];
if (!user) return res.status(404).end();

user.name = name;

res.json(user);

});

it('변경된 name을 응답한다', (done) => {
const name = 'chally';
request(app)
.put('/users/3')
.send({name: name})
.end((err, res) => {
res.body.should.have.property('name', name);
done();
});
})

1
Gichul Roh 프로필

curl 명령어 관련 Gichul Roh 2018.10.30

맥 환경에선 curl 명령어를 실행하여 확인가능 하지만,

윈도우 cmd 모드에선 curl 명령어를 사용하기 위해서 따로 설치해야 하나요?

아니면 윈도우 cmd 모드에서 node index.js 기동하고 나서

확인할 수 있는 다른 방법이 있나요?

3
이창헌 프로필

강의 파일 공유 가능할까요?? 이창헌 2018.09.27

강의해주신 소스코드 공유 가능할까요??

좋은 강의 감사합니다.

0
여어 프로필

isNaN Number.isNaN 여어 2018.08.18

그냥 IsNaN이라고 쓰면 프로토타입 체이닝을 통해서 Number.isNaN을 찾는 과정이 들어가게 되나여?

그래서 Number.isNaN으로 쓰셨는지 궁금합니다

2
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스