묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결따라하며 배우는 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 업데이트라고 되어 있는데, 이게 업데이트 반영 된건가요?
-
해결됨[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
sequelize 대신 mongoose를 사용하는 이유
12장 프로젝트는 sequelize로도 구현이 가능할 텐데, seqeulize 대신 mongoose를 사용하신 이유가 궁금합니다. mongoose를 사용하는 것이 더 좋은 성능을 보이나요?
-
미해결따라하며 배우는 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 업데이트]
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 업데이트]
mongodb project 및 cluster관련
안녕하세요! 강의 잘 듣고 있습니다. 크리티컬한 질문은 아닌데요! boiler-plate 때 project를 만들었었는데, tdd-app에도 project를 새로 만들었습니다. 강의와 같이 간단한 프로젝트들이라면 프로젝트를 새로 안만들고 안쪽의 dbname만 바꿔서 사용하는 느낌으로 가는건가요? uri에서 dbname을 바꾸는건? 어떤 의도로 사용되는건지 여쭤보고 싶습니다!
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
mongodb에서 Auto_incement 기능을 사용할수 있는 방법이 있나요?
저는 이번 강의로 mongoose는 처음 이용해 보는데요. DB 의 _id 값에 SQL의 Auto_increment 이용하듯이 Int 타입으로 값을 넣고 싶은데요 어떻게 해야 하나요? express로 설계할 때에는 추가적으로 Collection을 만들고 거기에서 DB에 입력할때 값을 받아오고 숫자를 늘려주는 방법으로 했었는데요.. Nest로 설계하기는 약간 복잡한거 같아서 질문드립니다.
-
미해결따라하며 배우는 TDD 개발 [2023.11 업데이트]
mongoose 6.0.2 버전 오류
안녕하세요 강의가 너무 좋아서 한번더 퀵하게 복습 중인데, 그 사이에 mongoose의 메이저버전이 6으로 올라갔습니다. getProducts 통합 테스트할때, 전체 테스트(npm test)를 하면 오류가 안나지만, jest extension을 이용해서 아래 테스트만 진행하면 오류가 나네요. it('GET /products', async () => { const res = await request(app).get('/products'); expect(res.statusCode).toBe(200); expect(Array.isArray(res.body)).toBeTruthy(); expect(res.body[0].name).toBeDefined(); expect(res.body[0].description).toBeDefined(); }); 검색해서 좀 알아봐도 뚜렷한 답이 안나와서 혹시 아시는 내용인지 문의 드립니다. 참고로 결과 공유 드립니다 ➜ tdd2 node '/Users/lyunhokim/dev/tdd2/node_modules/.bin/jest' '/Users/lyunhokim/dev/tdd2/test/integration/products.int.test.js' -t 'GET /products' console.log Server is running... at Server.<anonymous> (server.js:23:11) console.log connected at server.js:11:11 FAIL test/integration/products.int.test.js (5.734 s) ✕ GET /products (5007 ms) ○ skipped POST /products ○ skipped should return 500 on POST /products ● GET /products MongoInvalidArgumentError: Method "collection.find()" accepts at most two arguments at Collection.find (node_modules/mongodb/src/collection.ts:733:13) at NativeCollection.<computed> [as find] (node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:191:33) at NativeCollection.Object.<anonymous>.Collection.doQueue (node_modules/mongoose/lib/collection.js:135:23) at node_modules/mongoose/lib/collection.js:82:24 ● GET /products thrown: "Exceeded timeout of 5000 ms for a test. Use jest.setTimeout(newTimeout) to increase the timeout value, if this is a long-running test." 22 | }); 23 | > 24 | it('GET /products', async () => { | ^ 25 | const res = await request(app).get('/products'); 26 | expect(res.statusCode).toBe(200); 27 | expect(Array.isArray(res.body)).toBeTruthy(); at Object.<anonymous> (test/integration/products.int.test.js:24:1) at TestScheduler.scheduleTests (node_modules/@jest/core/build/TestScheduler.js:333:13) Test Suites: 1 failed, 1 total Tests: 1 failed, 2 skipped, 3 total Snapshots: 0 total Time: 5.778 s Ran all test suites matching /\/Users\/lyunhokim\/dev\/tdd2\/test\/integration\/products.int.test.js/i with tests matching "GET /products". 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.
-
해결됨따라하며 배우는 TDD 개발 [2023.11 업데이트]
mysql import 에러
mysql을 사용하여 진행 중인 프로젝트가 있는데 tdd를 적용해보려고 합니다. controllers/subscription.js const db = require('../routes/database.js'); exports.subscribeCalendar=()=>{}; 컨트롤러 코드는 위와 같고 test/unit/subscription.test.js const subscriptionController=require("../../controllers/subscription") describe("캘린더 구독",()=>{ test("subscribeCalendar 함수가 있을 겁니다.",()=>{ // subscriptionController.subscribeCalendar의 타입은 함수다. expect(typeof subscriptionController.subscribeCalendar).toBe("function") }) }) 테스트 코드는 위와 같은데 컨트롤러에서 db를 임포트 하기 전에는 에러가 안 떴는데 임포트 한 후에 테스트는 통과하지만 아래와 같은 에러 메시지가 뜹니다. 검색해보니 단위테스트 할 때는 db 관련 코드는 넣지 말라고 하는데 그 원인일까요? ReferenceError: You are trying to `import` a file after the Jest environment has been torn down. 이미 mysql로 진행 중이라 몽구스로 변경하기가 어려운데 에러메시지 무시하면 될까요..?
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
몽고디비와 mysql을 연결할 수 있을까요?
운동관련 서비스를 만들면서 사용자가 작성한 운동종목만 따로 가져와서 포스팅하려고 하는데 이를 위해서 mysql과 몽고디비를 연결해서 사용하고자 합니다. mysql에서 사용자가 작성한 운동종목 데이터만 몽고디비로 가져올 수 있을까요? sequelize와 mongoose를 사용하여, 또는 두 개의 디비를 connection하는 방법이 궁금합니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
npm run start, start error..
npm run start를 실행하면 start라는 script가 없다고 뜨면서 실행이 안되네요ㅠ
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
항상 뜨는 mongoose 에러
DeprecationWarning: Listening to events on the Db class has been deprecated and will be removed in the next major version 이라는 문구가 자꾸만 뜨는데 무슨 의미일까요.. ㅠㅠ 실행은 잘되는데 자꾸 거슬립니다
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
Nesting schema 질문요???
안녕하세요. 저번 질문의 답변 감사합니다. 각각 방법을 비교하여 펴포먼스 테스트로 많은 이해가 되었습니다. 그런데 궁금한게 혹시 그럼 예를 들면 blogSchema에 commentSchema를 nesting 하여 퍼포몬스를 증가 시켰는데 어찌보면 제일 좋은 방법인데 그럼 blogschema에 user 키에도 userSchema를 네스팅 하면 안되나요? user 키에는 Type.ObjectId만 설정 되오있는데 그냥 이것도 comment 처럼 user: [userScehma] 로 하면 되는지 궁금합니다.
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
client code refactoring 질문
client code에서 리팩토링 파트에서 보니 좀 오히려 프로덕션 레벨 및 좀더 깔끔 한 코드로 바꾸실려고 하는데 오히려 너무 복잡했습니다. model schema를 만들때 보면, 지금 user schema에는 관게를 안만들고 오히려 blog 와 comment 에만 만드셨는데 좀 쉽게 오히려 user schema에 comments: [commentSchema], 를 만들어줘도 되지 않았나요? 그리고 Types.objectId만 넣지말고 모든 데이타를 ref 해도 되지 않았을 까요? 아님 필요 한것만이라도요. 지금 comment schema에 user 와 blog는 Types.ObjectId만 있으니 너무 복잡하게 돌아 가는 것 같아 좀 헷갈렸습니다.
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
mongoose 연결 옵션 useUnifiedTopology <- 용도
mongoose 사용해서 mongo DB접속시 옵션값 중에서 useUnifiedTopology <- 요건 어떤 옵션인가요? 이게 없으면 (node:4744) DeprecationWarning:~(생략) 에러가 떠서 해당 옵션 넣으니깐 사라지긴 했는데 useUnifiedTopology 옵션 용도가 뭔지 모르겠습니다.