[[Deno]]で[[Parameterized Test]]を書く方法。公式からは提供されていないので自分で実装する必要がある。 ```ts export function parameterizedTest<T>( name: string, cases: T[], testFn: (input: T) => void, toTitle?: (name: string, input: T) => string, ) { for (const testCase of cases) { Deno.test( toTitle?.(name, testCase) ?? `${name} -> ${JSON.stringify(testCase)}`, () => { testFn(testCase); }, ); } } ``` 使用例。 ```ts import { assertEquals } from "@std/assert"; export function sum2(x: number, y: number): number { return x + y; } parameterizedTest< [ Parameters<typeof sum2>[0], Parameters<typeof sum2>[1], ReturnType<typeof sum2>, ] >( "sum2", // deno-fmt-ignore // prettier-ignore // x | y | expected [ [ 1 , 10 , 11 ], [ 1 , 100 , 101 ], [ 1 , 1000 , 1001 ], ] as const, ([x, y, expected]) => { assertEquals(sum2(x, y), expected); }, (name, [x, y, expected]) => `[${name}] ${x} + ${y} = ${expected} ?`, ); ``` ```console ❯ deno test running 3 tests from ./main_test.ts [sum2] 1 + 10 = 11 ? ... ok (0ms) [sum2] 1 + 100 = 101 ? ... ok (0ms) [sum2] 1 + 1000 = 1001 ? ... ok (0ms) ok | 3 passed | 0 failed (2ms) ```