Unit Test เบื้องต้นกับ mocha node.js by

30
Apr
0

เริ่มต้นก็ขอเกริ่นก่อนนะครับว่า Unit Test คืออะไร สำหรับคนที่ยังไม่รู้นะครับ

Unit Test คือการทดสอบระบบหรือ function ของเราเองว่ามีการทำงานที่ถูกต้องหรือไม่ ซึ่งมีประโยชน์มากในการทำงาน เพราะถ้าเราเขียนโค้ดเพียงอย่างเดียว อาจจะมี test case บาง case ที่เรายังเขียนไม่ครบ ทำให้เกิด bug หรือทำงานไม่ถูกต้อง เกิด logic error ได้ ตรงจุดนี้ unit test จะช่วย check อีกรอบว่าโค้ดเราถูกต้องหรือไม่ อีกกรณีนึงก็คือ การ test ที่ยากลำบากที่ต้องทำหลายขั้นตอนกว่าจะ check ได้ unit test ก็ช่วยเราได้ โดยเขียนลำดับขั้นตอนตรงนั้นไว้ก่อนได้

ก็เริ่มต้นนะครับต้อง install unit test ก่อน

npm install mocha

จากนั้นต้องสร้าง folder test เอาไว้ก่อนเพราะ mocha จะใช้ได้กับ file ที่อยู่ใน folder test เท่านั้น

จากนั้นก็เริ่มต้นสร้าง file เขียน unit test กันได้เลย


var assert = require("assert");

function sum(a, b){
return a + b;
}


describe('CalculateTest', function(){
describe('#sum', function(){
it('3 + 2 = 5', function(){
assert.equal( 5, sum(3, 2));
assert.equal( 4, sum(3, 2));
});
});
});

อธิบายในส่วนของโปรแกรม
assert เป็น library ที่ต้องใช้ในการเปรียบเทียบ ยกตัวอย่างเช่น
assert.equal(a,b) ใช้เปรียบเทียบค่าว่าเท่ากันหรือไม่ ถ้าไม่เท่าจะ error
assert.notequal(a,b) ก็ตรงกันข้ามกับ equal

ส่วน describe เป็นเหมือนที่กำหนดว่าเราจะ test ไฟล์อะไร และ test function อะไร เหมือนเอาไว้บอกเราเฉยๆ ไม่ได้ผูกกับ function
นั้นโดยตรง

it เป็นตัวบอกว่าเราจะ test เทสเคสอะไร แล้วผลลัพธ์ที่ได้เป็นอะไร เขียนไว้เพื่อความเข้าใจ ควรเขียนนะครับ มิงั้นอาจลืมเลือนได้ว่าทำไรไว้ และก็ทุกอย่างควรจะเอาไว้ใน it นะครับเพราะ it จะรันสุดท้ายเสมอไม่ได้รันเรียงกันแบบ synchronous

จากนั้นก็จะ check ตรง assert ถ้าถูกทั้งหมดก็ผ่าน แต่ผิดซักอันนึงก็จะแสดง error ขึ้นมา
จากโค้ดตัวอย่าง

unit test

unit test

จะบึ้มลองเอาโค้ดด้านล่างนี้ออก
assert.equal( 4, sum(3, 2));
ออกจะได้แบบนี้ครับ

test ผ่าน

test ผ่าน

ด้านบนนี่เป็นแบบธรรมดาครับ ถ้าเป็นแบบที่ต้อง test แบบ asynchronous จะต้องมี function callback ด้วย และวางไว้ตำแหน่งที่เทสเคสนั้นทำจบแล้ว ประมาณ code ด้านล่างครับ


describe('#CreateRoomToServer()', function(){
var data = {};
var counter = 3;

it('should have Tom's room and increase the room counter', function(done){
Room.Room({ roomid: 1, roomname: 'monica'}, function(){
Room.Room({ roomid: 2, roomname: 'Bukkak'}, function(){
data.roomname = 'Tom';
Room.CreateRoomToServer( data, socket, counter, function(counter){
Redis_Client.hgetall("room:" + 3 + ":data", function(err, obj) {
Client.GetClient(Redis_Client, socket_test.id, function(reply){
assert.equal('Tom', obj.roomname);
assert.equal(3, reply.roomid);
assert.equal(4, counter);
done();
});
});
});
});
});
});
});

สังเกตว่าเราจะเอา done() ไว้จุดในสุด
เรื่อง unit test กับการใช้ mocha ก็ประมาณนี้ครับ

Enjoy this article?

Consider subscribing to our RSS feed!

ไม่มีความเห็น

ยังไม่มีความเห็น

ใส่ความเห็น

RSS feed for comments on this post

 เราชนะรอบ 4 | ยืมเงิน 3000 ด่วน | แอพกู้เงิน | แอพเงินด่วน | สินเชื่อออนไลน์อนุมัติทันที | Site Map | กู้เงินก้อน | กระเป๋าตัง | thisshop และ ยืมเงินฉุกเฉิน 5000 ด่วน