Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Dieser Inhalt gilt für das ältere Power Query SDK in Visual Studio. Heute enthält das neue Power Query SDK in Visual Studio Code ein voll ausgestattetes Testframework , das Sie ermutigen, weitere Informationen zu testen und zu erfahren.
Für einfache und komplexe Verbinder ist das Hinzufügen von Komponententests eine bewährte Methode und wird dringend empfohlen.
Komponententests werden im Kontext des Power Query SDK von Visual Studio durchgeführt. Jeder Test wird als ein Fact definiert, das einen Namen, einen erwarteten Wert und einen tatsächlichen Wert hat. In den meisten Fällen ist der tatsächliche Wert ein M-Ausdruck, der einen Teil des Ausdrucks prüft.
Betrachten Sie eine Erweiterung, die drei Funktionen exportiert:
section Unittesting;
shared UnitTesting.ReturnsABC = () => "ABC";
shared UnitTesting.Returns123 = () => "123";
shared UnitTesting.ReturnTableWithFiveRows = () => Table.Repeat(#table({"a"},{{1}}),5);
Dieser Komponententestcode besteht aus vielen Fakten und einer Reihe allgemeiner Code für das Komponententestframework (ValueToText, Fact, Facts). Facts.Summarize Der folgende Code enthält einen Beispielsatz von Fakten (wechseln Sie zu UnitTesting.query.pq für den gemeinsamen Code):
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];
Wenn Sie das Beispiel in Visual Studio ausführen, werden alle Fakten ausgewertet, und Sie erhalten eine visuelle Zusammenfassung der Passraten:
Die Implementierung von Komponententests frühzeitig im Connectorentwicklungsprozess ermöglicht es Ihnen, die Prinzipien der testgesteuerten Entwicklung zu befolgen. Angenommen, Sie müssen eine Funktion namens Uri.GetHost schreiben, die nur die Hostdaten aus einem URI zurückgibt. Möglicherweise schreiben Sie zunächst einen Testfall, um zu überprüfen, ob die Funktion die erwartete Funktion ordnungsgemäß ausführt:
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")
)
Es können weitere Tests geschrieben werden, um sicherzustellen, dass die Funktion Randfälle korrekt behandelt.
Eine frühe Version der Funktion kann einige, aber nicht alle Tests bestehen:
Uri.GetHost = (url) =>
let
parts = Uri.Parts(url)
in
parts[Scheme] & "://" & parts[Host]
Die endgültige Version der Funktion sollte alle Komponententests bestehen. Diese Version erleichtert auch die Sicherstellung, dass zukünftige Updates für die Funktion keine der grundlegenden Funktionen versehentlich entfernen.