หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
Note
เนื้อหานี้ใช้ได้กับ Power Query SDK ดั้งเดิมใน Visual Studio วันนี้ Power Query SDK ใหม่ใน Visual Studio Code มี เฟรมเวิร์กการทดสอบ ที่มีคุณสมบัติครบถ้วนซึ่งเราขอแนะนําให้คุณทดสอบและเรียนรู้เพิ่มเติม
สําหรับตัวเชื่อมต่อทั้งแบบง่ายและซับซ้อน การเพิ่มการทดสอบหน่วยเป็นแนวทางปฏิบัติที่ดีที่สุดและแนะนําเป็นอย่างยิ่ง
การทดสอบหน่วยทําได้ในบริบทของ Power Query SDK ของ Visual Studio การทดสอบแต่ละครั้งถูกกําหนดให้เป็น a Fact ที่มีชื่อ ค่าที่คาดหวัง และค่าจริง ในกรณีส่วนใหญ่ "ค่าจริง" คือนิพจน์ M ที่ทดสอบส่วนหนึ่งของนิพจน์ของคุณ
พิจารณาส่วนขยายที่ส่งออกฟังก์ชันสามฟังก์ชัน:
section Unittesting;
shared UnitTesting.ReturnsABC = () => "ABC";
shared UnitTesting.Returns123 = () => "123";
shared UnitTesting.ReturnTableWithFiveRows = () => Table.Repeat(#table({"a"},{{1}}),5);
รหัสการทดสอบหน่วยนี้ประกอบด้วยข้อเท็จจริงมากมาย และรหัสทั่วไปจํานวนมากสําหรับกรอบการทดสอบหน่วย (ValueToText, , FactFacts, ) Facts.Summarize รหัสต่อไปนี้แสดงชุดตัวอย่างของข้อเท็จจริง (ไปที่ UnitTesting.query.pq สําหรับรหัสทั่วไป):
section UnitTestingTests;
shared MyExtension.UnitTest =
[
// Put any common variables here if you only want them to be evaluated once
// Fact(<Name of the Test>, <Expected Value>, <Actual Value>)
facts =
{
Fact("Check that this function returns 'ABC'", // name of the test
"ABC", // expected value
UnitTesting.ReturnsABC() // expression to evaluate (let or single statement)
),
Fact("Check that this function returns '123'",
"123",
UnitTesting.Returns123()
),
Fact("Result should contain 5 rows",
5,
Table.RowCount(UnitTesting.ReturnTableWithFiveRows())
),
Fact("Values should be equal (using a let statement)",
"Hello World",
let
a = "Hello World"
in
a
)
},
report = Facts.Summarize(facts)
][report];
การเรียกใช้ตัวอย่างใน Visual Studio จะประเมินข้อเท็จจริงทั้งหมดและให้ข้อมูลสรุปภาพของอัตราการผ่าน:
การใช้การทดสอบหน่วยในช่วงต้นของกระบวนการพัฒนาตัวเชื่อมต่อช่วยให้คุณสามารถปฏิบัติตามหลักการของการพัฒนาที่ขับเคลื่อนด้วยการทดสอบได้ ลองนึกภาพว่าคุณต้องเขียนฟังก์ชันที่เรียกว่า Uri.GetHost ส่งคืนเฉพาะข้อมูลโฮสต์จาก URI คุณอาจเริ่มต้นด้วยการเขียนกรณีทดสอบเพื่อตรวจสอบว่าฟังก์ชันนั้นทําหน้าที่ตามที่คาดไว้อย่างเหมาะสม:
Fact("Returns host from URI",
"https://bing.com",
Uri.GetHost("https://bing.com/subpath/query?param=1¶m2=hello")
),
Fact("Handles port number appropriately",
"https://bing.com:8080",
Uri.GetHost("https://bing.com:8080/subpath/query?param=1¶m2=hello")
)
สามารถเขียนการทดสอบเพิ่มเติมเพื่อให้แน่ใจว่าฟังก์ชันจัดการกับกรณีขอบได้อย่างเหมาะสม
ฟังก์ชันเวอร์ชันแรกอาจผ่านการทดสอบบางอย่าง แต่ไม่ใช่ทั้งหมด:
Uri.GetHost = (url) =>
let
parts = Uri.Parts(url)
in
parts[Scheme] & "://" & parts[Host]
เวอร์ชันสุดท้ายของฟังก์ชันควรผ่านการทดสอบหน่วยทั้งหมด เวอร์ชันนี้ยังทําให้ง่ายต่อการตรวจสอบให้แน่ใจว่าการอัปเดตฟังก์ชันในอนาคตจะไม่ลบฟังก์ชันพื้นฐานใดๆ โดยไม่ได้ตั้งใจ