44,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
TypeError: user_model_1.default.create is not a function
학습중 repository pattern을 적용하여 테스트를 적용해 보던 중 TypeError: user_model_1.default.create is not a function 라는 에러와 마주하게 되었습니다.user.repository.tsimport User from "../model/user.model"; export class UserRepository { createUser = async(user) => { const newUser = await User.create({ ...user }) return newUser } findUserById = async(id:string) => { const user = await User.findById('65cba34813b2fbec74a558a8') if(!user) throw new Error('존재하지 않는 유저정보 입니다.') return user } }user.repository.test.tsimport { UserRepository } from "../../app/repository/user.repository" const createMock = jest.fn() const findByIdMock = jest.fn() jest.mock("../../app/model/user.model", () => { return { User: jest.fn(() => { return { create:createMock, findById:findByIdMock } }) } }) describe('user repository Create', () => { let sut:UserRepository; const newUser = { id:"abcdefrwgsf123123", name:"test name", email:"test@nanana.com" } beforeEach(() => { sut = new UserRepository() }) afterEach(() => { jest.clearAllMocks() }) it('create api', async () => { createMock.mockReturnValueOnce(newUser) const actual = await sut.createUser({name:newUser.name, email:newUser.email}) expect(createMock).toHaveBeenCalledTimes(1) expect(actual).toStrictEqual(newUser) expect(createMock).toHaveBeenCalledWith({name:newUser.name, email:newUser.email}) }) }) jest실행시 create api의 createMock.mockReturnValue() 까지는 실행이되지만 await sut.createUser() 부분에서 에러가 나는것으로 확인되었습니다.
- 미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
에러 처리를 위한 단위테스트 작성
에러 처리를 위한 단위테스트 작성 강의 내용 중 이해가 가지 않는 부분이 생겨 글 남김니다.errorMessage 의 message 내용은 description property missing 에러입니다. 그렇다면 테스트 상황에서 포스트맨과 동일하게 description이 빠진 객체를 저장하다 에러가 발생해야 맞는 테스트가 아닌가 하는 의문이 생기네요.it('should handle errors', async () => {const errorMessage = {message: "description property missing"}; const rejectedPromise = Promise.reject(errorMessage); productModel.create.mockReturnValue(rejectedPromise); await controller.createProduct(req, res, next); expect(next).toBeCalledWith(errorMessage);})
- 미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
res.status(201) 부분에서 typeerror가 발생합니다
에러메시지: TypeError: Cannot read properties of undefined (reading 'status')res.status(200); 해당 코드에서 발생하는 에러인데 강사님이 코드돌리실때는 해당 에러가 발생하지 않는데 제 pc에서는 왜 에러가 발생하는지 잘 모르겠습니다...코드는 강의에서 입력하신 그대로 따라서 했습니다
- 미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
따라하며 배우는 TDD 개발 [2023.11 업데이트] 강의 질문
따라하며 배우는 TDD 개발 [2023.11 업데이트]2023.11 업데이트라고 되어 있는데, 이게 업데이트 반영 된건가요?
- 해결됨따라하며 배우는 TDD 개발 [2023.11 업데이트]
[MAC] PORT:5000번 관련 에러
안녕하세요. PORT 5000으로 설정했더니이미 사용중인 포트로 나오더라구요.혹시 같은 증상 있으신 분 있으실 수 있을 것 같아서 남겨둡니다.맥 기준 시스템설정에서 '에어플레이 수신' 을 꺼주면 5000번 포트 사용할 수 있습니다.https://developer.apple.com/forums/thread/682332
- 미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
테스트를 위한 데이터베이스를 생성해야하나요?
운영 단계에서의 데이터베이스와개발 단계에서의 데이터베이스를 분리하여 운영한다고 하면,테스트를 위한 데이터베이스도 만들어야할까요?
- 미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
Postman 사용방법에 대해서
안녕하세요 Postman을 윈도우에서 깔아서 쓰려고 하는데 자꾸만 셋업로그가 잘못되었다고 에러가 뜹니다. 다시 시도해 봐야 하나요? 아니면 postman을 launch부터 하고 나서 깔아야 하나요? 참고로 postman을 launch하고 나서 또 다시 다운로드 시도해봤습니다.
- 미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
jest.fn() 을 할당할때 타입스크립트에서 에러가 발생합니다.
Typescript를 쓰면서 공부중입니다. productModel.create = jest.fn();위 코드를 할당할 때Cannot assign to 'findByUsername' because it is a read-only property.라는 컴파일 에러가 발생합니다...타입스크립트에서는 어떻게 할당하면 될까요 ?
- 미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
라우터를 돌릴 때
안녕하세요. 어제 알려주신 대로 제어판에서 다시 편집하고 npm run start까지 돌리는 것 까지는 잘 되었습니다. 근데 문제는 chrome에 localhost:5000을 쳤을 때는 잘 나왔지만 localhost:5000/api/products라고 칠 때는이렇게 뜹니다.이거는 단순한 코딩 문제인가요? 아니면 제가 잘 못따라 오고 있는건가요?그리고 MongoDB 새로 가입했을 때 제가 뭔가 실수한 거 같은데, MongoDB 쪽 스킵하고 Jest쪽만 들어도 상관없나요? 아니면 MongoDB도 순차적으로 들어야 하나요?
- 해결됨따라하며 배우는 TDD 개발 [2023.11 업데이트]
npm run start를 실행할 때 부터가 이상합니다.
안녕하세요 방금 말씀드렸다시피, 설치하는 거까지는 기기가 다른 것 제외하고는 별 다른 이상이 없었지만, npm run start를 실행할 때 부터가이렇게 뜹니다. 이럴 경우에는 무슨 문제인가요? 그리고 기기를 아예 바꿔야 하나요?
- 미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
node.js에 대한 이상점
안녕하세요. 어제 강의에서 알려주신대로 node.js를 설치하고 npm init, npm install express mongoose --save, npm install jest supertest node-mocks-http --save-dev까지 설치해서 실행까지 했는데, 문제는 테스트를 실행할 때, 버전이 맞지 않는다고 테스크 결과 자체가 뜨지 않는다는 겁니다. 제가 현재 윈도우를 쓰고 있는데 강의하고 있는 컴터는 맥북이라 달라서 그런지 조금 헷갈립니다. 기존에 작업했던거 전부 삭제하고 다시 깔아야 하낭요? 일단 제가 node.js를 깔았을때 node_modules가 폴더 형식으로 뜨고, package.json은 빨간 문양이 뜹니다.
- 미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
nodemocks 오류나니까 뺴고 설치하셔요
npm i jest supertest --save-devnpm install --save-dev node-mocks-httphttps://www.npmjs.com/package/node-mocks-http
- 미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
Node.js 앱을 테스트하기 위한 Jest 설정 부분..
jest.config.js 파일을 생성 해주지 않았는데도npm test 했을 때 몽구스 관련 에러 메세지가 나오지 않는 이유는 뭘까요?
- 해결됨따라하며 배우는 TDD 개발 [2023.11 업데이트]
models 파일만 첫번째 글자를 대문자로 해주는 이유
models 파일만 Product.js 로 첫번째 글자를 대문자로 해주는 이유가 있는지 궁금합니다.
- 미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
mongodb project 및 cluster관련
안녕하세요! 강의 잘 듣고 있습니다. 크리티컬한 질문은 아닌데요! boiler-plate 때 project를 만들었었는데, tdd-app에도 project를 새로 만들었습니다. 강의와 같이 간단한 프로젝트들이라면 프로젝트를 새로 안만들고 안쪽의 dbname만 바꿔서 사용하는 느낌으로 가는건가요? uri에서 dbname을 바꾸는건? 어떤 의도로 사용되는건지 여쭤보고 싶습니다!
- 미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
무조건 failure case 로 넘어가시는 분들
제 버전 이슈인지는 모르겠으나, send 라는 친구가 req.body 안에 정보를 넣어주는 역할을 하는데 이게 undefined 로 인식되는 문제가 있었습니다.그래서 무조건 invalid case 에 해당하는 이슈는 다음 셋팅으로 해결이 될수도 있습니다. await request(app) .post('/products/') .set('Content-Type', 'application/json') .set('Accept', 'application/json') 단, req.body 안에 정보를 바로 넣지않고 저처럼 req.body.product 안에 넣으신 분들(다음 예시) { "product": { "name": "gloves", "description": "good to use it", "price": 15 } } send 안에 다음과 같이 작성해서 안전하게 넘길 수 있습니다. await request(app) .post('/products/') .set('Content-Type', 'application/json') .set('Accept', 'application/json') .send({ ...product });
- 미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
올려둔 ES6 Express Jest Boilerplate Template 으로 개발 중이신 분들...
아래처럼 작성하시면 됩니다. import * as productsController from '../../src/products/products.controller'; export const hello = ""; 는 import { hello } from '경로'; 이렇게 임포트... const hello = ""; export default hello; 는 import hello from '경로'; 이렇게 임포트...
- 미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
ES6 사용하고 싶은 분들...
저만 그런건지 모르겠지만 아래 환경에서 jest.fn() is not function 에러가 발생하고 있습니다. 1. Express.JS 사용 중 2. ES6 문법을 사용 중 3. package.json 에 "type":"module" 옵션 추가 4. 그로 인해 import 구문의 './파일명.js' 로 작성해야함 5. package.json 의 script 항목의 "test" : "jest" 를 아래로 변경 "node --experimental-vm-modules node_modules/jest/bin/jest.js" 에러 발생 원인은 '.js' 부분 떄문이라고 추측하지만 정확하지 않습니다. 떠힌 Jest NODEModules 기능은 실험적 기능이며, 몇몇 기능이 지원되지 않는 것이라고 추측하고 있습니다.따라서 dev 환경에서는 ES6 를 쓰도록 별도로 셋업하고 ES5 로 빌드 하는 과정이 필요한 것이 아닌가 싶었습니다.git clone https://github.com/unchaptered/express-web my-app 혹은npx degit unchaptered/express-web my-appcd my-appnpm i를 이용해서 프로젝트를 셋업하고 작성하시면 됩니다.커뮤니티에도 올려두었는데 문제 되는 부분 있으면 댓글 부탁드립니다. ES6 Express Jest Boilerplate Template ES6 익스프레스 보일러플레이트 탬플릿 - 인프런 | 자유주제 (inflearn.com)
- 미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
Jest did not exit one second after the test run has completed. 이슈
안녕하세요!! npm test를 하면 끝부분에 항상 다음과 같은 메세지가 나오는데요, >>>>>Ran all test suites. Jest did not exit one second after the test run has completed. This usually means that there are asynchronous operations that weren't stopped in your tests. Consider running Jest with `--detectOpenHandles` to troubleshoot this issue. ^C <<<<<<< 위 문제를 해결해주기 위해 package.json을 다음과 같이 설정해주면, >>>>>>> "scripts": { "test": "jest --detectOpenHandles" }, <<<<<<<< 위에 나왔던 메세지 대신에 아래와같은 에러 메세지가 나옵니다. >>>>>>>>> Jest has detected the following 1 open handle potentially keeping Jest from exiting: ● TCPWRAP 9 | const mongoose = require('mongoose'); 10 | > 11 | mongoose.connect( | ^ 12 | 'mongodb://127.0.0.1:27017/tdd-test', 13 | { 14 | useNewUrlParser: true, at makeConnection (node_modules/mongodb/src/cmap/connect.ts:395:18) at connect (node_modules/mongodb/src/cmap/connect.ts:61:3) at checkServer (node_modules/mongodb/src/sdam/monitor.ts:300:10) at node_modules/mongodb/src/sdam/monitor.ts:341:5 at executeAndReschedule (node_modules/mongodb/src/utils.ts:1026:5) at makeInterruptibleAsyncInterval (node_modules/mongodb/src/utils.ts:1033:5) at Monitor.connect (node_modules/mongodb/src/sdam/monitor.ts:147:54) at Server.connect (node_modules/mongodb/src/sdam/server.ts:236:22) at createAndConnectServer (node_modules/mongodb/src/sdam/topology.ts:907:10) at node_modules/mongodb/src/sdam/topology.ts:921:22 at Array.reduce (<anonymous>) at connectServers (node_modules/mongodb/src/sdam/topology.ts:919:43) at Topology.connect (node_modules/mongodb/src/sdam/topology.ts:438:5) at createTopology (node_modules/mongodb/src/operations/connect.ts:97:12) at connect (node_modules/mongodb/src/operations/connect.ts:52:10) at node_modules/mongodb/src/mongo_client.ts:432:14 at maybePromise (node_modules/mongodb/src/utils.ts:609:3) at MongoClient.connect (node_modules/mongodb/src/mongo_client.ts:431:24) at node_modules/mongoose/lib/connection.js:796:12 at NativeConnection.Object.<anonymous>.Connection.openUri (node_modules/mongoose/lib/connection.js:781:19) at node_modules/mongoose/lib/index.js:340:10 at node_modules/mongoose/lib/helpers/promiseOrCallback.js:32:5 at promiseOrCallback (node_modules/mongoose/lib/helpers/promiseOrCallback.js:31:10) at Mongoose.Object.<anonymous>.Mongoose._promiseOrCallback (node_modules/mongoose/lib/index.js:1140:10) at Mongoose.connect (node_modules/mongoose/lib/index.js:339:20) at Object.<anonymous> (server.js:11:10) at Object.<anonymous> (test/itegration/product.int.test.js:2:13) <<<<<<<<< 이런 에러나 메세지가 나오지 않도록 조치할 수 있는 방법이 있을까요? 감사합니다.
- 미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
왜 인자네개 함수 안만들어도 포스트맨에서는 에러메세지가 나오는 것인가요?
잘못된 리퀘스트를 보냈을때 에러메세지 확인문제 말인데요, 넥스트를 해주어서 포스트맨에서는 아래와 같은 메세지 확인이 가능합니다. ValidationError: Product validation failed: description: Path `description` is required. at model.Document.invalidate (D:\z3-develope\tdd-test\gzero\node_modules\mongoose\lib\document.js:2942:32) at D:\z3-develope\tdd-test\gzero\node_modules\mongoose\lib\document.js:2731:17 at D:\z3-develope\tdd-test\gzero\node_modules\mongoose\lib\schematype.js:1323:9 at processTicksAndRejections (internal/process/task_queues.js:77:11) 그런데 아이티테스트에서는 메소드네개인 함수를 만들어주지 않아서왜 에러메세지가 안나오는것인가요??또한, 익스프레스의 경우는 에러를 넥스트로 넘겨줬을때 에러로 처리하는 메소드가 이미 있어서 그동안 안만들고도 사용가능했던건가요? +++ 6분37초쯤 영상에서 앱.리슨부분이 코멘트 되어있는데강의 흐름상 코멘트 했던 기억이 없는데 언제 코멘트 되었으며,코멘트한 이유는 무엇인가요?