$ npm install jest
{
"name": "compare-prc",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www",
"dev": "gulp",
"test": "jest"
},
"dependencies": {
"jest": "^28.1.1"
}
}
✅ Spring Junit에서의 테스트 디렉토리 권장 구조
- 기존 서비스용 소스와 비슷한 구조의 디렉토리 구조로 테스트 소스를 생성한다.
- ex) src/main/java/controller 라는 폴더에 YouRiverController.java 라는 자바 클래스를 생성했다면...
==> src/test/java/controller 라는 디렉토리 구조로 YouRiverControllerTest.java 라는 자바 클래스를 만들어주도록 한다.
let temp;
let temp_json;
describe("yooRiver test", () => {
beforeEach(() => {
temp = 1;
});
test('1 is 1', () => {
expect(1).toBe(1);
});
test('[1,2,3] is [1,2,3]', () => {
expect([1,2,3]).toEqual(1);
});
afterEach(() => {
temp = 0;
});
})
일단 gettingInfo-service.test.js 파일에 다음과 같이
간단하게 stockApi를 호출하는 메소드 테스트 소스를 작성했다.
// stockx api를 호출한다.
async function stockXApiTest(stockXProdId) {
var path = 'https://stockx.com/'+stockXProdId;
var stockXData = new prodObj();
var apiResult = new apiResult_();
try {
await stockX.fetchProductDetails(path)
.then(product =>{
apiResult.res = true;
stockXData.apiResult = apiResult;
stockXData.url=path;
stockXData.name = product.name;
stockXData.image = product.image;
stockXData.prdMap = {};
for (let element of product.variants){
if(element.market.lowestAsk != null && element.market.lowestAsk > 0 ){
var prcInfo = new prcInfo_();
prcInfo.size = element.size;
prcInfo.lowestAsk =(element.market.lowestAsk != null) ? Number(element.market.lowestAsk) : null ;
prcInfo.highestBid = (element.market.highestBid != null) ? Number(element.market.highestBid) : null ;
prcInfo.lastSale = (element.market.lastSale != null) ? Number(element.market.lastSale) : null ;
stockXData.prdMap[element.size]= prcInfo;
}
}
})
} catch (err) {
apiResult.res = false;
apiResult.msg = "stockXApi Error =>"+err;
stockXData.apiResult = apiResult;
}
return stockXData;
}
// 단위 테스트 실행
describe("stockXApiTest", () => {
test("stockXApiTest", () => {
try {
return stockXApiTest('adidas-yeezy-boost-700-magnet')
.then(async result => {
var res = JSON.parse(result.body);
console.log(res);
return res;
})
.catch(e => {
console.log(" stockXApiTest Error =>"+e);
});
} catch (err) {
console.log(" stockXApiTest Error =>"+err);
}
});
});
$ npm run test
npm run test를 실행하면 모든 .test.js 파일이 실행된다.
나는 Junit 처럼 구현하고 싶어서 모든 실행파일에 대응하는 테스트 파일을 다 만들어주었기 때문에
각각의 파일에 테스트 구현이 안되어있다고 'Your test suite must contain at least one test.' 문구와 함께 다음과 같은 오류가 났다.
특정 파일만 테스트할 거니깐 다음과 같이 실행하면 된다.
$ npm run test gettingInfo-service.test.js