Nodejs 를 사용해서 Http GET 테스트를 진행 해보기로 했습니다.
이유는 있을리가 없습니다...ㅋ
1. Nodejs 다운받기
https://nodejs.org/en/download/
저는 밑줄 친 그것을 받겠습니다.
예전에는 인스톨러 버전만 있었던 것 같은 데 지금은 바이너리 버전도 있네요~
https://blog.naver.com/tommybee/221096155945
그런 다음, 아무데나 풀어 놓습니다. 그리고 배치 파일 하나를 만들고
이렇게 해 주었습니다.
SET PATH=D:\DEV\SDK\node-v16.17.0-win-x64;%PATH%;
call cmd /K nodevars.bat
2. Http 테스트하기 -GET
그리고 능력이 안되는 관계로 소스를 하나 얻어 봅니다.
https://www.educative.io/answers/what-is-the-httpsget-method-in-node
위 사이트에서 테스트를 해봐도 되는 데... 뭐 그럼 좀 그렇죠?
- jest 설치
jest 라는 테스트 툴이 있는 것 같은 데요. 이 라이브러리를 설치 해 줍니다.
npm install jest
npm install axios
- 테스트 모듈 만들기
테스트 모듈도 다음 사이트를 참고 해서 이리저리 만들어 봅니다.
순서는
- package.json 만들고,
- 실제 테스트 코드 만들고 - http_get.js -
- jest 용 테스트 코드를 만들어 -
주면 될 것 같습니다.
package.json
{"scripts":{"test":"jest"},"dependencies":{"jest":"^29.0.2"}}
http_get.js
module.exports = {
testHttpGet: (value) => {
const https = require('https');
https.get('https://www.naver.com',
(resp)=>{
let data = '';
// A chunk of data has been received.
resp.on('data', (chunk) => {
data += chunk;
});
// The whole response has been received. Print out the result.
resp.on('end', () => {
console.log(data);
});
}).on("error", (err) => {
console.log("Error: " + err.message);
});
return false;
},
};
nodejs_test1.spec.js
참고로 js 파일 바로 앞에 붙어 있는 spec 은 스팩이라고 합니다
const { testHttpGet } = require('./httpget_test');
test('테스트가 성공하는 상황', () => {
expect(testHttpGet('GET 메시지 성공')).toEqual(false);
});
실행하기
실행 해 볼까요?
D:\DEV\workspaces_js\mytest>npm test
> test
> jest
PASS ./nodejs_test1.spec.js
√ 테스트가 성공하는 상황 (51 ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 1.514 s
Ran all test suites.
● Cannot log after tests are done. Did you forget to wait for something async in your test?
Attempted to log "Error: self signed certificate in certificate chain".
14 | // The whole response has been received. Print out the result.
15 | resp.on('end', () => {
> 16 | console.log(data);
| ^
17 | });
18 |
19 | }).on("error", (err) => {
at console.log (node_modules/@jest/console/build/CustomConsole.js:172:10)
at ClientRequest.<anonymous> (httpget_test.js:16:15)
경사가 났네요~ 오류가 났어요~ 그래서 스택오버플로 선생님이 말씀 하시길...
그래서 코드를 좀 바꿨습니다.
package.json
{"scripts":{"test":"jest"},"dependencies":{"axios":"^0.27.2","jest":"^29.0.2","js-file-download":"^0.4.12"}}
httpget_test.js
testHttpGet: (value) => {
const axios = require("axios");
const https = require("https");
var fileDownload = require('js-file-download');
const url = 'https://www.naver.com';
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
const options = {
method: "get",
responseType: 'arraybuffer',
//headers: {
// "User-Agent": "test",
//},
httpsAgent: new https.Agent({
rejectUnauthorized: false,
}),
};
axios(url, options)
.then((res) => {
console.log(res.data);
//console.log(JSON.stringify(res.data));
//fileDownload(res.data, 'filename.csv');
//console.log(res.data);
//const writableStream = fs.createWriteStream('aaa.ts');
//writableStream.write(res.data);
//writableStream.end();
//writableStream.on('finish', () => {
// console.log(`All your sentences have been written to ${filePath}`);
//})
//setTimeout(() => {
// process.exit(0);
//}, 100);
return true;
})
.catch((error) => console.log(error));
return false;
},
nodejs_test1.spec.js
참고로 js 파일 바로 앞에 붙어 있는 spec 은 스팩이라고 합니다
const { testHttpGet } = require('./httpget_test');
test('테스트가 성공하는 상황', async () => {
//expect.assertions(1);
const result = await testHttpGet('GET 메시지 성공'); // let the Promise resolve
//const data = result.getStatus(); // call getStatus on the result
expect(result).toEqual(false);
//done();
});
참고 사이트
https://www.educative.io/answers/what-is-the-httpsget-method-in-node
https://goddaehee.tistory.com/268
http://www.javased.com/index.php?api=javax.net.ssl.TrustManager
https://seungjuitmemo.tistory.com/269
https://yeonfamily.tistory.com/18
https://yamoo9.github.io/axios/guide/error-handling.html
https://di-rk.medium.com/async-and-jest-lessons-learned-1aec0209f5d4
https://www.digitalocean.com/community/tutorials/how-to-work-with-files-using-streams-in-node-js
https://stackoverflow.com/questions/27159179/how-to-convert-blob-to-file-in-javascript
https://stackoverflow.com/questions/49040247/download-binary-file-with-axios
https://www.npmjs.com/package/js-file-download
https://stackoverflow.com/questions/49040247/download-binary-file-with-axios
'프로그래밍' 카테고리의 다른 글
차근차근 따라하는 다이얼로그 기반 윈32 C 프로그램 (0) | 2022.11.08 |
---|---|
OpenCV의 역사 (0) | 2022.11.07 |
아파치 POI로 하는 엑셀 프로그래밍-2 (0) | 2022.09.07 |
아파치 POI로 하는 Excel 프로그래밍 (0) | 2022.09.03 |
Guice - Google (2) | 2022.08.30 |