C++ 개발시 변수명을 아래와 같은 규칙으로 정의 해야 한다.
작성일 : 2022-03-14
C++ 개발시 변수명을 아래와 같은 규칙으로 정의 해야 한다.
작성일 : 2022-03-14
API 테스트를 위한 클라이언트 코드를 정리한다.
작성일 : 2022-01-28 nodeJs Ver : v16.13.1
1> 코드작성 (client.js)
// For Execute Shell
// node client.js URL-A
const http = require("http");
const name = "OPENDOCS_TEST_CLIENT";
if(process.argv.length < 3) {
console.log("Error - TestCase Require.");
}
const testCase = process.argv[2];
const req = require(`./ClientTestCase/${testCase}`);
http.request(req, (res) => {
let bodyStr = '';
res.on("data", chunk => {
bodyStr += chunk;
});
res.on("end", () => {
// Request
console.log(`---------- Result (${name} : ${testCase}) ----------`);
console.log(res.headers);
console.log("----------------------------------------");
console.log(bodyStr);
console.log("------------------------------------------------------------//\n\n\n");
});
}).end(req.body);
2> 요청샘플 작성 : ClientTestCase 폴더에 {API명}.js 로 생성한다
// ./ClientTestCase/URL-A.js
// 테스트시 'node client.js URL-A' 명령으로 실행
exports.host = "127.0.0.1";
exports.port = 9090;
exports.method = "POST";
exports.path = "/url_a";
exports.headers = {"Content-Type": "application/json", "TEST": "TET"};
exports.body = JSON.stringify({
data: "hello A"
});
// ./ClientTestCase/URL-B.js
// 테스트시 'node client.js URL-B' 명령으로 실행
exports.host = "127.0.0.1";
exports.port = 9090;
exports.method = "POST";
exports.path = "/url_b";
exports.headers = {"Content-Type": "application/json", "TEST": "TET"};
exports.body = JSON.stringify({
data: "hello B"
});
외부연동 개발시 임시로 서버를 실행해 놓고 테스트 하기 위한 코드를 정리한다.
작성일 : 2022-01-26 nodeJs Ver : v16.13.1
1> 코드작성 (server.js)
// For Execute Shell
// node server.js
const http = require("http");
const fs = require('fs');
const port = 9090;
const name = "OPENDOCS_TEST_SERVER";
http.createServer((req, res) =>{
let bodyStr = '';
req.on("data", chunk => {
bodyStr += chunk;
});
req.on("end", () => {
// Request
let transactionId = Date.now().toString();
console.log(`---------- Request (${name} : ${transactionId}) ----------`);
console.log(req.headers);
console.log("----------------------------------------");
console.log(bodyStr);
// Response
let resStatus = 404;
let resHead = {"Content-Type": "application/json", transactionId};
let resBody = {};
if(req.url == "/url_a") {
// - TODO
const fileName = 'url_a.json';
resStatus = 200;
resHead = {...resHead, "additionalHead": "url_a"};
const jsonFile = fs.readFileSync(`./ServerTestCase/${fileName}`, 'utf8');
resBody = JSON.parse(jsonFile);
} else if(req.url == "/url_b") {
// - TODO
const fileName = 'url_b.json';
resStatus = 200;
resHead = {...resHead, "additionalHead": "url_b"};
const jsonFile = fs.readFileSync(`./ServerTestCase/${fileName}`, 'utf8');
resBody = JSON.parse(jsonFile);
}
res.writeHead(resStatus, resHead);
res.end(JSON.stringify(resBody));
console.log(`---------- Response (${name} : ${transactionId}) ----------`);
console.log(resHead);
console.log("----------------------------------------");
console.log(resBody);
console.log("------------------------------------------------------------//\n\n\n");
});
}).listen(port);
2> 응답샘플 작성 : ServerTestCase 폴더 아래 선언한 fileName 과 일치하게 생성
// ./ServerTestCase/url_a.json
{
"TEST": "TEST URL-A"
}
// ./ServerTestCase/url_b.json
{
"TEST": "TEST URL-B"
}
파일을 실시간으로 읽어 응답하기 때문에 서버 재시작 없이 응답값을 변경하여 테스트 할 수 있다.