Huomautus
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Muistiinpano
Tämä sisältö on käytettävissä vanhaan Power Query SDK:hen Visual Studiossa. Visual Studio Coden uusi Power Query SDK sisältää nykyään täysin suositellun testikehyksen , jota suosittelemme testaamaan ja oppimaan lisää.
Yksikkötestien lisääminen on sekä yksinkertaisissa että monimutkaisissa liittimillä paras käytäntö ja erittäin suositeltavaa.
Yksikkötestaus suoritetaan Visual Studion Power Query SDK:n kontekstissa. Jokaisella testillä Fact
on nimi, odotettu arvo ja todellinen arvo. Useimmissa tapauksissa "todellinen arvo" on M-lauseke, joka testaa lausekkeen osan.
Harkitse yksinkertaista laajennusta, joka vie kolme funktiota:
section Unittesting;
shared UnitTesting.ReturnsABC = () => "ABC";
shared UnitTesting.Returns123 = () => "123";
shared UnitTesting.ReturnTableWithFiveRows = () => Table.Repeat(#table({"a"},{{1}}),5);
Tämä yksikkötestikoodi koostuu monista faktoista ja joukosta yleisiä koodejä yksikkötestikehykselle (ValueToText
, Fact
, Facts
, Facts.Summarize
). Seuraava koodi sisältää esimerkkijoukon faktoja (siirry kohtaan UnitTesting.query.pq yleistä koodia varten):
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];
Mallin suorittaminen Visual Studiossa arvioi kaikki faktat ja antaa visuaalisen yhteenvedon välitysluvuista:
Kun otat yksikkötestauksen käyttöön liittimen kehitysprosessin varhaisessa vaiheessa, voit noudattaa testipohjaisen kehityksen periaatteita. Kuvittele, että sinun on kirjoitettava funktio nimeltä Uri.GetHost
, joka palauttaa vain URI:n isäntätiedot. Voit aloittaa kirjoittamalla testitapauksen varmistaaksesi, että funktio suorittaa odotetun funktion asianmukaisesti:
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")
)
Lisää testejä voidaan kirjoittaa sen varmistamiseksi, että funktio käsittelee reunatapaukset asianmukaisesti.
Funktion varhainen versio saattaa läpäistä joitakin testejä, mutta ei kaikkia testejä:
Uri.GetHost = (url) =>
let
parts = Uri.Parts(url)
in
parts[Scheme] & "://" & parts[Host]
Funktion lopullisen version tulee läpäistä kaikki yksikkötestit. Tämän ansiosta on myös helppo varmistaa, että funktion tulevat päivitykset eivät poista vahingossa mitään sen perustoimintoja.