簡體   English   中英

如何參數化 TypeScript 單元測試中的測試用例?

[英]How do I parameterize test cases in TypeScript unit tests?

我有一個簡單的通過單元測試:

describe("Example", () => {
    it("Return digits or empty string", () => {
        let actual = SmokeTest.ProblemOne("1");
        assert.equal(actual, "1");
    })
})

我現在希望測試許多其他情況(空字符串、更復雜的輸入和邊緣情況)。 我已經閱讀了有關如何在 TypeScript 中實現固定裝置的信息,但這對於一組test-input, expected-output值來說似乎有點矯枉過正。

在 TypeScript / Mocha 中定義這樣一個數組的慣用方法是什么?

您可以制作一個可以重復使用的 function。

function assertProblemOne(input: string, expected: string): void {
    let actual = SmokeTest.ProblemOne(input);
    assert.equal(expected, actual);
}

describe("Example", () => {
    it("Return digits or empty string", () => {
        assertProblemOne("input here", "expected result here")
    })
})

但是,我不確定這真的比簡單好得多。

assert.equal(SmokeTest.ProblemOne("1"), "1");

唯一比調試代碼更糟糕的是調試測試。 因此,除非在測試之間共享大量代碼,否則我建議讓每個測試中運行的代碼在結構上盡可能簡單。

來自摩卡文檔

不需要特殊的語法......來參數化測試[你可以]用閉包生成它們。

describe("Example", () => {

    // define a closure that calls the method we are testing
    const testProblemOne = ({arg, expected}) =>
        function () {
            const actual = SmokeTest.ProblemOne(arg);
            assert.equal(actual, expected);
        }

    // invoke the closure for each test case
    it("Empty returns empty", testProblemOne({arg: "", expected: ""}));
    it("Single digit identity", testProblemOne({arg: "1", expected: "1"}));
    // additional test cases here...
})

這種技術避免使用foreach以提高可讀性和更廣泛的 IDE 集成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM