Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Catatan
Konten ini berlaku untuk Power Query SDK warisan di Visual Studio. Saat ini Power Query SDK baru di Visual Studio Code berisi kerangka kerja pengujian berfungsi penuh yang kami dorong untuk menguji dan mempelajari lebih lanjut.
Untuk konektor sederhana dan kompleks, menambahkan pengujian unit adalah praktik terbaik dan sangat direkomendasikan.
Pengujian unit dilakukan dalam konteks Power Query SDK Visual Studio. Setiap pengujian didefinisikan sebagai Fact
yang memiliki nama, nilai yang diharapkan, dan nilai aktual. Dalam kebanyakan kasus, "nilai aktual" akan menjadi ekspresi M yang menguji bagian dari ekspresi Anda.
Pertimbangkan ekstensi sederhana yang mengekspor tiga fungsi:
section Unittesting;
shared UnitTesting.ReturnsABC = () => "ABC";
shared UnitTesting.Returns123 = () => "123";
shared UnitTesting.ReturnTableWithFiveRows = () => Table.Repeat(#table({"a"},{{1}}),5);
Kode pengujian unit ini terdiri dari banyak Fakta, dan banyak kode umum untuk kerangka kerja pengujian unit (ValueToText
, Fact
, Facts
, Facts.Summarize
). Kode berikut menyediakan contoh kumpulan Fakta (buka UnitTesting.query.pq untuk kode umum):
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];
Menjalankan sampel di Visual Studio mengevaluasi semua Fakta dan memberi Anda ringkasan visual laju pass:
Menerapkan pengujian unit di awal proses pengembangan konektor memungkinkan Anda untuk mengikuti prinsip pengembangan berbasis pengujian. Bayangkan Anda perlu menulis fungsi yang disebut Uri.GetHost
yang hanya mengembalikan data host dari URI. Anda mungkin mulai dengan menulis kasus pengujian untuk memverifikasi bahwa fungsi melakukan fungsi yang diharapkan dengan tepat:
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")
)
Lebih banyak pengujian dapat ditulis untuk memastikan bahwa fungsi menangani kasus tepi dengan tepat.
Versi awal fungsi mungkin lulus beberapa tetapi tidak semua pengujian:
Uri.GetHost = (url) =>
let
parts = Uri.Parts(url)
in
parts[Scheme] & "://" & parts[Host]
Versi akhir fungsi harus lulus semua pengujian unit. Ini juga memudahkan untuk memastikan bahwa pembaruan fungsi di masa mendatang tidak secara tidak sengaja menghapus salah satu fungsi dasarnya.