Κοινή χρήση μέσω


Χειρισμός δοκιμής μονάδας

Σημείωμα

Αυτό το περιεχόμενο ισχύει για το SDK Power Query παλαιού τύπου στο Visual Studio. Σήμερα, το νέο Power Query SDK στο Visual Studio Code περιέχει ένα πλαίσιο δοκιμών με πλήρεις δυνατότητες, το οποίο σας προτείνουμε να δοκιμάσετε και να μάθετε περισσότερα.

Τόσο για απλές όσο και για σύνθετες συνδέσεις, η προσθήκη δοκιμών μονάδας είναι μια βέλτιστη πρακτική και συνιστάται ιδιαίτερα.

Η δοκιμή μονάδων επιτυγχάνεται στο πλαίσιο του Power Query SDK του Visual Studio. Κάθε δοκιμή ορίζεται ως μια Fact που έχει ένα όνομα, μια αναμενόμενη τιμή και μια πραγματική τιμή. Στις περισσότερες περιπτώσεις, η "πραγματική τιμή" θα είναι μια παράσταση M που δοκιμάζει μέρος της παράστασης.

Εξετάστε μια απλή επέκταση που εξάγει τρεις συναρτήσεις:

section Unittesting;

shared UnitTesting.ReturnsABC = () => "ABC";
shared UnitTesting.Returns123 = () => "123";
shared UnitTesting.ReturnTableWithFiveRows = () => Table.Repeat(#table({"a"},{{1}}),5);

Αυτός ο κώδικας δοκιμής μονάδας αποτελείται από πολλά στοιχεία και έναν σωρό κοινό κώδικα για το πλαίσιο δοκιμής μονάδας (ValueToText, Fact, Facts, 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&param2=hello")
),
Fact("Handles port number appropriately",
    "https://bing.com:8080",
    Uri.GetHost("https://bing.com:8080/subpath/query?param=1&param2=hello")
)

Μπορούν να εγγραφούν περισσότερες δοκιμές για να εξασφαλιστεί ότι η συνάρτηση χειρίζεται κατάλληλα υποθέσεις άκρου.

Μια πρώιμη έκδοση της συνάρτησης μπορεί να περάσει ορισμένες αλλά όχι όλες τις δοκιμές:

Uri.GetHost = (url) =>
    let
        parts = Uri.Parts(url)
    in
        parts[Scheme] & "://" & parts[Host]

Ορισμένες δοκιμές αποτυγχάνουν.

Η τελική έκδοση της συνάρτησης θα πρέπει να περάσει όλες τις δοκιμές μονάδας. Αυτό διευκολύνει επίσης τη διασφάλιση ότι μελλοντικές ενημερώσεις της συνάρτησης δεν καταργούν κατά λάθος καμία από τις βασικές λειτουργίες της.

Όλες οι δοκιμές περνούν.