[英]How do JavaScript unit-tests differ from their TypeScript equivalent?
[英]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.