ปัญหาหลักของของเขียน Serverless ต่างๆ คือจะทดสอบโค้ดตัวเองอย่างไร ไม่ให้เสียเงินค่า Compute และ Request ตลอดเวลา ยิ่งถ้าโค้ดนั้นไม่มี Unit Test แล้ว ยิ่งยาก เพราะเราไม่สามารถจำลอง Serverless Runtime ได้เอง
ตัว AWS Lambda เอง เลยออกเครื่องมือตัวหนึ่งสำหรับชาว .Net ชื่อว่า AWS .NET Mock Lambda Test Tool เป็นเครื่องมือที่ช่วยให้นักพัฒนาสามารถทดสอบ Business Logic ของโค้ดตัวเองได้ง่ายๆ ไม่โดนคิดเงิน และคล้ายกับที่ทำงานบน AWS ด้วย
วิธีติดตั้ง
ติดตั้งเครื่องมือด้วยคำสั่งนี้
dotnet tool install -g Amazon.Lambda.TestTool-2.1
เสร็จเรียบร้อยครับ!
วิธีการใช้งาน
ให้เข้าไปที่โฟลเดอร์ของโค้ดเรา และอยู่ใน level เดียวกับที่มีไฟล์ .csproj จากนั้นรันคำสั่ง
dotnet publish
เพื่อให้ build ไฟล์ DLL binary ก่อน จากนั้นรันคำสั่ง
dotnet lambda-test-tool-2.1
เมื่อรันคำสั่งแล้วจะมีหน้าตาประมาณนี้
มันจะทำการ Mock Server ให้เรา จากนั้นมันจะเปิด Brower ขึ้นมา ให้เรากรอกข้อมูล Input เพื่อทำการทดสอบ
สรุป
ใช้ง่ายไหมครับ ผมลองตัด Internet แล้วทดสอบ ก็ยังใช้ได้อยู่ แปลว่ามันไม่ได้วิ่งไปหา Amazon เพื่อทำให้เราเสียเงินในการทดสอบ, รวมถึงให้เรา Develop ได้ทุกที่แม้ไม่มีเน็ตด้วย
ส่วนใครคิดจะใช้ ขอให้เขาใจด้วยว่ามันมีข้อจำกัดบางอย่างอยู่ในตอนนี้
- YAML based CloudFormation templates are not yet supported.
- No mechanism for setting custom Environment variables.
- NuGet packages that use native dependencies are not supported.
ถ้าถามผม อย่างไรเสีย การมี Unit Test ก็ดีกว่านะครับ 😀
Reference
- https://github.com/aws/aws-lambda-dotnet/tree/master/Tools/LambdaTestTool