29,700원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
update는 연동이 잘 안되네요 ㅠ
써주신 로직 그대로 따랐는데(상세한 코드는 좀 다르게 쓰긴 했지만) 작동이 안되어요. user.name === name 이 true가 나오고 있고, unique설정도 모델에서 해줬는데 말입니다. 문제가 뭘까요?ㅠ const update = (req, res) => { const id = parseInt(req.params.id, 10) const name = req.body.name; if (!name || Number.isNaN(id)) return res.status(400).end(); // models.User.update를 써도 되지만 아래와 같이 findOne과 save()를 쓸 수도 있음 models.User.findOne({ where: { id } }) .then(user => { if (!user) return res.status(404).end(); user.name = name; user.save() .then(() => { res.status(203).json(user); }) .catch(err => { if (err.name = 'SequelizeUniqueConstraintError') { return res.status(409).end(); } res.status(500).end(); }) }) };
- 미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
데이터베이스 싱크에 대해 조금만 설명 더 부탁드립니다.
(진짜 강의 너무너무 유익하게 잘 듣고 있습니다. 제가 들어본 인프런 강의 중 최고예요.) 근데, 데이터베이스 관련해서는 살짝 더 설명주시면 좋을 것 같습니다. - 데이터베이스와 ORM을 연결?한다는 게 무슨 뜻인지 - 싱크가 무엇이며 왜 하는 것인지(이번 강의에서 매 테스트수트마다 새로 데이터 싱크 과정을 추가했는데, 이렇게 매 테스트마다 수동으로 추가하는 과정이 약간 제가 생각했던 DB의 느낌과 다른 것 같아서요) 위 부분들에 대해 살짝 찝찝하게 넘어갔는데, 답변 달아주시면 대단히 감사하겠습니다.(강사님 아니어도 아시는 수강생분은 답변 부탁드릴게요!)
- 미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
혹시 이 부분은 nodejs만의 특징인가요?
아니면 혹시 자바스크립트의 특징으로 보아도 무방할까요?
- 해결됨테스트주도개발(TDD)로 만드는 NodeJS API 서버
HTTP Request 값이 2초가 넘어 갈때의 해결법
Get요청으로 해당 HTTP를 긁어오는 테스트를 하려고 하는데 모카 테스트에서 2초가 넘어갔다는 이유로 계속 실패합니다. 해결방법이 있나요?
- 미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
Wrapping 의 뜻이 잘 이해가 안 갑니다.
app.get('/', function(req, res){ res.send('Hello World!'); }); 이 부분에서 http 의 req, res를 한번 wrapping 한 express의 객체라고 하셨는데 그 의미가 이해가지 않습니다 ㅜㅜ
- 미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
spec 파일이 여러 개 일 때!
패쓰가 늘어나면서 spec 파일도 늘어났을 때파일들의 관리와 테스트 수행은 어떻게 하나요?
- 미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
TDD 슈퍼테스트2 강의 중
이리저리 찾아보는데도 모르겠어서 질문드립니다.모듈에서 가져온 기능을 못 찾는 거 같은데 원인을 모르겠습니다ㅠㅠWeb Strom을 사용하고 있습니다.1) GET /users는...:TypeError: app.daddress is not a functionat 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.jsconst 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.jsconst app = require('./index');const request = require('supertest');describe('GET /users는', ()=>{ it('...', (done)=>{ request(app) .get('/users') .end((err, res)=>{ console.log(res.body); done(); }) })})
- 미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
모듈별 테스트 파일들이 많아질 경우, 일괄 테스트 진행할때에는 어떻게 처리하나요?
모듈별 테스트 파일들이 많아질 경우, 일괄 테스트 진행할 때에는 어떻게 처리하나요?build 시점에 테스트를 선행해서 문제가 없을 경우 빌드되도록 연계하고 싶을때에는 어떻게 처리하는지도 궁금합니다.
- 미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
supertest 관련 코드를 작성하고 mocha로 테스트를 돌린 이후에
supertest 관련 코드를 작성하고 mocha로 테스트를 돌린 이후에프로세스가 종료가 안되고 대기상태로 남아있는데 어떤 부분을 의심해 보면 좋을까요?
- 미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
Mocha + Should vs Jasmine
Jasmine의 경우엔 테스트 러너와 검증을 같이 제공하는것 같은데,실무환경에서는 Mocha + Should 와 Jasmine 중 어떤것을 많이 사용하는지 궁금합니다.많이 사용하는 이유가 있다면 이유도 궁금하고요..
- 미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
In Memory DB 관련 질문드립니다~!
안녕하세요 강사님 세션을 저장할때 In Memory DB를 사용하면 좋다고 말씀하셨는데,1.그럼 서버를 재구동하면 세션정보는 다 날아가는건가요?! 간단한 사이트를 운영하는데 서버쪽 소스를 수정하면 업데이트 하기위해서 매번 서버를 재구동시키는데, 좋지 않은 방법인가요? 라우팅정보만 수정하는 로직을 만들어서 그것만 실행시키는게 좋을까요?
- 미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
강의를 보면서 입력한 코드는 전부 맞는 것 같은데, 에러가 하나 떠서요
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(); }); })
- 미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
curl 명령어 관련
맥 환경에선 curl 명령어를 실행하여 확인가능 하지만,윈도우 cmd 모드에선 curl 명령어를 사용하기 위해서 따로 설치해야 하나요?아니면 윈도우 cmd 모드에서 node index.js 기동하고 나서확인할 수 있는 다른 방법이 있나요?
- 미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
강의 파일 공유 가능할까요??
강의해주신 소스코드 공유 가능할까요??좋은 강의 감사합니다.
- 미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
isNaN Number.isNaN
그냥 IsNaN이라고 쓰면 프로토타입 체이닝을 통해서 Number.isNaN을 찾는 과정이 들어가게 되나여?그래서 Number.isNaN으로 쓰셨는지 궁금합니다
- 미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
assert vs should
왜 assert말고 should가 권장되나여???가독성 때문인가요
- 미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
save save dev 차이
1.express랑 morgan package들은 save로 했는데 개발 환경 뿐 아니라 app을 움직이는데도 필요해서 save로 해준 건가요?2.모듈과 package의 차이는 무엇인지 궁금합니다 모듈이 작은 단위인가요?
- 미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
internal server error 가 발생하는데 검색을 해봐도 이유를 잘 모르겠습니다.
(사진)
- 미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
npm test 종료 문제
supertest 테스트 실행후 서버가 종료 되지 않고 있습니다.어떤부분을 실수 해서 종료가 되지 않을까요?
- 미해결테스트주도개발(TDD)로 만드는 NodeJS API 서버
강의내용 따라하는데 오류가 발생하는데 원인을 못찾겠어요.. (사용자 조회 API 성공시)
var express = require('express');var morgan = require('morgan');var app = express();var users = [{id: 1, name: 'alice'},{id: 2, name: 'daniel'},{id: 3, name: 'chris'}];app.use(morgan('dev'));app.get('/users', function (req, res) {req.query.limit = req.query.limit || 10;const limit = parseInt(req.query.limit, 10);if(Number.isNaN(limit)) {return res.status(400).end();}res.json(users.slice(0, limit));});app.get('/users/:id,', function (req, res) {const id = parseInt(req.params.id, 10); //10진법if(Number.isNaN(id)) return res.status(400).end();const user = users.filter((user) => user.id === id)[0];if(!user) return res.status(404).end();res.json(user);});app.delete('/users/:id', (req, res) => {const id = parseInt(req.params.id, 10); //10진법if(Number.isNaN(id)) return res.status(400).end();users.filter(user=>user.id !== id);res.status(204).end();});app.listen(3000, function () {console.log('Example app listening on port 3000!');});module.exports = app;위 코드는 index.js이고const request = require('supertest');const should = require('should');const app = require('./index');describe('GET /users는', () => {describe('성공시', () => {// 1. 유저 객체를 담은 배열로 응답it('유저 객체를 담은 배열로 응답한다 ', (done) => { //비동기로 테스트할때는 파라미터에 done을 넣어주어야함.request(app).get('/users').end((err, res) => {res.body.should.be.instanceOf(Array);done(); // 비동기로 테스트할때는 처리가 끝난 후 done() 함수를 호출해야한다.});}) // 2. 최대 limit 개수만큼 응답 it('최대 limit 개수만큼 응답한다.', (done) => { // 비동기로 테스트시 done이라는 callback함수를 넣어줘야함 request(app) .get('/users?limit=2') .end((err, res) => { res.body.should.have.lengthOf(2); done(); // 비동기로 테스트할때는 처리가 끝난 후 done() 함수를 호출해야한다. }); })});describe('실패시', () => { // 3. limit이 숫자형이 아니면 400을 응답한다. it('limit이 숫자형이 아니면 400을 응답한다 ', (done) => { //비동기로 테스트할때는 파라미터에 done을 넣어주어야함. request(app) .get('/users?limit=two') .expect(400) // 4. offset이 숫자형이 아니면 400을 응답한다 //.end((err, res) => { // done(); // 비동기로 테스트할때는 처리가 끝난 후 done() 함수를 호출해야한다. //}); .end(done); //done만 호출하고 res활용을 안하니까 간단하게 코딩. })})});describe('GET /users/1는', () => {describe('성공시', () => {it('id가 1인 유저 객체를 반환한다', (done) => {request(app).get('/users/1').end((err, res) => {res.body.should.have.property('id', 1);done();});});});describe('실패시', () => { it('id가 슷자가 아닐경우 400을 응답한다', (done) => { request(app) .get('/users/one') .expect(400) .end(done); }); it('id로 유저를 찾을 수 없을 경우 404로 응답한다', (done) => { request(app) .get('/users/999') .expect(404) .end(done); });});});describe('GET /users/1', () => {describe('성공시', () => {it('204를 응답한다', (done) => {request(app).delete('/users/1').expect(204).end(done);});});describe('실패시', () => {it('id가 숫자가 아닐경우 400으로 응답한다', (done) => {request(app).delete('/users/one').expect(400).end(done);});})});위 코드는 index.spec.js입니다.1) GET /users/1는성공시id가 1인 유저 객체를 반환한다:Uncaught AssertionError: expected Object {} to have property idat Assertion.fail (node_modulesshouldcjsshould.js:275:17)at Assertion.value [as property] (node_modulesshouldcjsshould.js:356:19)at Test.request.get.end (study-eduindex.spec.js:49:42)at Test.assert (node_modulessupertestlibtest.js:181:6)at Server.assert (node_modulessupertestlibtest.js:131:12)at emitCloseNT (net.js:1659:8)at _combinedTickCallback (internal/process/next_tick.js:135:11)at process._tickCallback (internal/process/next_tick.js:180:9)2) GET /users/1는실패시id가 슷자가 아닐경우 400을 응답한다:Error: expected 400 "Bad Request", got 404 "Not Found"at Test._assertStatus (node_modulessupertestlibtest.js:268:12)at Test._assertFunction (node_modulessupertestlibtest.js:283:11)at Test.assert (node_modulessupertestlibtest.js:173:18)at Server.assert (node_modulessupertestlibtest.js:131:12)at emitCloseNT (net.js:1659:8)at _combinedTickCallback (internal/process/next_tick.js:135:11)at process._tickCallback (internal/process/next_tick.js:180:9)위와 같이 오류가 발생하는데 원인을 못찾겠네요..따라한다고 따라하는데 위 부분만 안됩니다..왜그럴까요??1시간째 돌려보면서 코드 계속 다시 따라쳐보는데 역시나 계속 저 코드만 에러가 나요