전체 글
-
Jest - Module Function2 (mock implementations, mock Name)FrameWork/Jest 2023. 3. 9. 17:52
Mock Implementations 함수 전체를 대체 아직 구현이 안되어 있거나 내부 구현이 복잡하여 테스트를 하기 힘든 겨우 테스트를 위해 간단한 구현체를 만들어 해당 함수를 대체 jest.fn, mockImplementation을 사용하여 구현 jest.mock으로 mocking 하겠다고 지저하면, 실제 구현채가 가려지고 mock 구현체를 바라보게 된다. const foo = require("../../lib/foo"); jest.mock("../../lib/foo"); describe("Mock Implementations", () => { test("test jest fn", () => { const myMockFn = jest.fn((callback) => callback(null, true)..
-
Jest - Mock Function1 (모듈 mocking jest.fn( ), jest.mock( ))FrameWork/Jest 2023. 3. 9. 16:08
직접 작성한 모듈 모킹 실제 구현 코드1 messageService.js module.export = function sendEmail(email, message) { /* 이메일 보낸는 코드 */ }; module.export = function sendSMS(phone, message) { /* 문자를 보내는 코드 */ }; userService.js const { sendEmail, sendSMS } = require("./messageService"); exports.register = function register(user) { /* DB에 회원 추가 */ const message = "회원 가입을 환영합니다"; sendEmail(user.email, message); sendSMS(user...
-
Jest - create - 결과값 상태값 전달카테고리 없음 2023. 3. 6. 17:39
결과값 상태값 전달 데이터베이스에 데이터를 저장했으니 이제 그 결과값을 클라이언트에 전달 해줘야 한다. 상태 값과 결과 값을 보내준다. res.statusCode const productController = require("../../controller/products"); const productModel = require("../../models/Product"); const httpMocks = require("node-mocks-http"); productModel.create = jest.fn(); let req, res, next; beforeEach(() => { req = httpMocks.createRequest(); res = httpMocks.createResponse(); next..
-
Jest - beforeEachFrameWork/Jest 2023. 3. 6. 17:20
BeforeEach 여러개의 테스트에 공통된 code가 있다면 beforeEach안에 넣어서 반복을 줄일수 있다. Jest 파일 구조 위 구조에서 4개의 test case에서 공통되는 코드들이 있다면 beforeEach라는 곳에 넣어 주면 모든 test들이 실행 되기 전에 beforeEach안에 들어 있는 것이 먼저 실행되고 그 다음에 그안에 들어 있는 test들이 각각 실행이된다. 혹시 특정 describe안에만 들어있는 것이 있다면 해당 describe안에 beforeEach를 넣어 줘도 된다. beforeEach(() => { req = httpModcks.createRequest(); res = httpMocks.createResponse(); next = null; }); 현재 위 코드에서 be..
-
Jest - create( ) - node-mock-httpFrameWork/Jest 2023. 3. 6. 16:45
product.create( ) 아직 저장할 Product 데이터를 넣어 주지 않았기 때문에 실제로 db에 저장할 data를 넣어준다. 몽구스 모델을 이용한 데이터 저장 const product = require('../models/Product'); //product.create(); product.create(req.body); 위와 같이 req 객체를 이용해서 요청에 들어온 body를 create메소드에 인자로 넣어줘서 데이터베이스에 저장해준다. 그렇기 때문에 단위 테스트에서도 req객체가 필요하다 그렇다면 어떻게 이 req객테를 단위테스트에서 이용할까? node-mock-http 모듈이용 const httpModcks = require("node-mocks-http"); let req = http..
-
Jest - TDD 개발 방식 순서FrameWork/Jest 2023. 3. 6. 15:39
TDD 개발방식 1. 해야할일 정의 2. 단위 테스트 작성 - 실제 코드 작성전에 test case를 작성한다. 3. 테스트 코드에 대응하는 실제 코드작성 - test case가 성공(passed)될 수 있게 실제 코드를 작성한다. const productController = require("../../controller/products"); describe("Product Controller Create", () => { it("should have a createProduct function", () => { expect(typeof productController.createProduct).toBe("function"); }); }); product 인스턴스 data를 database에 저장하기 ..
-
Jest - jest.fn() 함수카테고리 없음 2023. 3. 6. 14:50
jest.fn( ) Mock 함수를 생성하는 함수이다. mock은 모의 라는 의미로 가짜 흉내내는 이러한 뜻이 있다. 그래서 Mock함수가 하는 일은 다위 테스트를 작성할 때, 해당 코드가 의돚하는 부분을 가짜로 대체하는 일을 해준다. 단위 테스트가 독립적이여야 하는 이유 우선 의존적인 부분을 구현하기 까다로운 경우가 있으면, 의존적인 부분의 상태에 따라서 테스트하고자 하는 부분의 테스트 결과가 영향을 받을 수 있기 때문이다. 그래서 단위 테스트는 특정 기능만 분리해서 독립적으로 사용한다. jest.fn()를 이용해서 가짜 함수를 생성하므로써 의존적인 부분으로 인해 테스트 상황에서의 영향을 해결할 수 있다. jest.fn()이 생성한 가짜 함수는 이 함수에서 어떠한 일들이 발생했는지, 다른 코드들에 의해..
-
단위 테스트(Unit Test)에 대하여FrameWork/Jest 2023. 3. 6. 14:05
단위(Unit) 테스트란? 단위 테스트는 개발자가 수행하고 자신이 개발한 코드 단위(일명 모듈, 구성요소)를 테스트한다. 소스코드의 개별 단위를 테스트하여 사용할 준비가 되었는지 확인하는 테스트 방법이다. 개발 라이프 사이클 초기 단계에서 버그가 식별되므로 버그 수정 비용을 줄이는데 도움이 된다. 간단하게 생각하면 메소드를 테스트하는 또다른 메소드라고 생각하면 된다. 단위(Unit)테스트의 조건 1. 독립적이어야 하며, 어떤 테스트도 다른 테스트에 의존하지 않아야 한다. 2.격리 되어야 한다. Ajax, Axios, LocalStorage등 테스트 대상이 존재하는 것을 다른 것으로 대체해야 한다. 단위(unit) 테스트와 통합(integration) 테스트 단위 테스트 먼저 단위(Unit) 테스트는 te..