Spracovanie testovania jednotky
V prípade jednoduchých aj komplexných konektorov je pridanie testov zariadenia osvedčeným postupom a dôrazne odporúčame.
Testovanie jednotky sa vykonáva v kontexte súpravy Power Query SDK vo Visual Studiu. Každý test je definovaný ako Fact
hodnota, ktorá má názov, očakávanú hodnotu a skutočnú hodnotu. Vo väčšine prípadov bude "skutočná hodnota" výrazom jazyka M, ktorý testuje časť vášho výrazu.
Zoberme si veľmi jednoduché rozšírenie, ktoré exportuje tri funkcie:
section Unittesting;
shared UnitTesting.ReturnsABC = () => "ABC";
shared UnitTesting.Returns123 = () => "123";
shared UnitTesting.ReturnTableWithFiveRows = () => Table.Repeat(#table({"a"},{{1}}),5);
Tento kód testu zariadenia sa skladá z viacerých faktov a zväzku bežného kódu pre testovací rámec zariadenia (ValueToText
, , Fact
Facts
, Facts.Summarize
). Nasledujúci kód obsahuje vzorovú množinu faktov (prejdite na súbor UnitTesting.query.pq pre bežný kód):
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];
Spustením ukážky vo Visual Studiu sa vyhodnotia všetky fakty a poskytne vám vizuálny súhrn úspešnosti:
Implementácia testovania jednotky na začiatku procesu vývoja konektora vám umožňuje dodržiavať zásady vývoja založeného na teste. Predstavte si, že potrebujete napísať funkciu s názvom Uri.GetHost
, ktorá vráti iba hostiteľské údaje z identifikátora URI. Napísaním testovacieho prípadu môžete začať s overením, či funkcia správne vykonáva očakávanú funkciu:
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")
)
Je možné zapísať aj ďalšie testy, aby sa zaistilo, že funkcia vhodným spôsobom spracováva okrajové prípady.
Staršia verzia funkcie môže prejsť niektorými testami, ale nie všetkými testami:
Uri.GetHost = (url) =>
let
parts = Uri.Parts(url)
in
parts[Scheme] & "://" & parts[Host]
Konečná verzia funkcie by mala prejsť všetkými testami zariadenia. Tým sa tiež zjednodušuje zabezpečenie toho, aby budúce aktualizácie funkcie náhodne neodstránili žiadnu zo svojich základných funkcií.
Pripomienky
https://aka.ms/ContentUserFeedback.
Pripravujeme: V priebehu roka 2024 postupne zrušíme službu Problémy v službe GitHub ako mechanizmus pripomienok týkajúcich sa obsahu a nahradíme ju novým systémom pripomienok. Ďalšie informácie nájdete na stránke:Odoslať a zobraziť pripomienky pre