Elixir:
การเขียนการทดสอบ

วิธีการ:

Elixir ใช้ ExUnit เป็นเฟรมเวิร์คทดสอบภายในที่มีประสิทธิภาพสูงและใช้งานง่าย นี่คือตัวอย่างพื้นฐาน:

  1. สร้างไฟล์ทดสอบใหม่ในไดเรกทอรี 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 เพื่อหลีกเลี่ยงการเชื่อมต่อกับบริการจริง:

  1. เพิ่ม mox ใน dependencies ของคุณใน mix.exs:
defp deps do
  [
    {:mox, "~> 1.0.0", only: :test},
    # อื่นๆ...
  ]
end
  1. กำหนดโมดูลโม๊คใน test helper ของคุณ (test/test_helper.exs):
Mox.defmock(HTTPClientMock, for: HTTPClientBehaviour)
  1. ใช้โม็คในกรณีทดสอบของคุณ:
# 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, การตั้งค่านี้ช่วยให้คุณแยกการทดสอบหน่วยออกจากการพึ่งพาภายนอกจริงๆ โดยมุ่งเน้นไปที่พฤติกรรมของโค้ดของคุณเอง รูปแบบนี้รับรองว่าการทดสอบของคุณทำงานได้เร็วและยังคงน่าเชื่อถือ ไม่ว่าสถานะของบริการภายนอกหรือการเชื่อมต่ออินเทอร์เน็ตจะเป็นอย่างไร.