Elixir:
การเขียนการทดสอบ
วิธีการ:
Elixir ใช้ ExUnit เป็นเฟรมเวิร์คทดสอบภายในที่มีประสิทธิภาพสูงและใช้งานง่าย นี่คือตัวอย่างพื้นฐาน:
- สร้างไฟล์ทดสอบใหม่ในไดเรกทอรี
test
ของโปรเจ็กต์ Elixir ของคุณ ตัวอย่างเช่น ถ้าคุณกำลังทดสอบโมดูลที่ชื่อMathOperations
ไฟล์ทดสอบของคุณอาจเป็นtest/math_operations_test.exs
# test/math_operations_test.exs
defmodule MathOperationsTest do
use ExUnit.Case
# นี่เป็นกรณีทดสอบง่ายๆ เพื่อเช็กฟังก์ชันการบวก
test "การบวกของสองตัวเลข" do
assert MathOperations.add(1, 2) == 3
end
end
เพื่อรันทดสอบของคุณ ใช้คำสั่ง mix test
ในเทอร์มินัลของคุณ ถ้าฟังก์ชัน MathOperations.add/2
บวกสองตัวเลขได้ถูกต้อง คุณจะเห็นผลลัพธ์ที่คล้ายกับ:
..
เสร็จสิ้นใน 0.03 วินาที
1 การทดสอบ, 0 ความล้มเหลว
สำหรับการทดสอบที่เกี่ยวข้องกับบริการภายนอกหรือ API คุณอาจต้องการใช้ไลบรารีโม๊ค เช่น mox
เพื่อหลีกเลี่ยงการเชื่อมต่อกับบริการจริง:
- เพิ่ม
mox
ใน dependencies ของคุณในmix.exs
:
defp deps do
[
{:mox, "~> 1.0.0", only: :test},
# อื่นๆ...
]
end
- กำหนดโมดูลโม๊คใน test helper ของคุณ (
test/test_helper.exs
):
Mox.defmock(HTTPClientMock, for: HTTPClientBehaviour)
- ใช้โม็คในกรณีทดสอบของคุณ:
# test/some_api_client_test.exs
defmodule SomeAPIClientTest do
use ExUnit.Case
import Mox
# สิ่งนี้บอก Mox ว่าให้ตรวจสอบว่าโม็คนี้ถูกเรียกตามที่คาดหวัง
setup :verify_on_exit!
test "รับข้อมูลจาก API" do
# ตั้งค่าการตอบกลับโม๊ค
expect(HTTPClientMock, :get, fn _url -> {:ok, "Mocked response"} end)
assert SomeAPIClient.get_data() == "Mocked response"
end
end
เมื่อรัน mix test
, การตั้งค่านี้ช่วยให้คุณแยกการทดสอบหน่วยออกจากการพึ่งพาภายนอกจริงๆ โดยมุ่งเน้นไปที่พฤติกรรมของโค้ดของคุณเอง รูปแบบนี้รับรองว่าการทดสอบของคุณทำงานได้เร็วและยังคงน่าเชื่อถือ ไม่ว่าสถานะของบริการภายนอกหรือการเชื่อมต่ออินเทอร์เน็ตจะเป็นอย่างไร.