我正在尝试编写 TypeScript,这是我人生中的第一次,我想使用一个可以使用参数组合进行快照测试的测试库。
我已经尝试过 jest + jest-extended-snapshot。
代码:
function myFunction(aNumber, aString) {
if (aNumber > 0) {
return `${aString} #${aNumber}`;
}
if (aString === "foo") {
return `${aNumber} bar`;
}
return "This is twisted…";
}
it("should continue working as before", () => {
expect(myFunction).toVerifyAllCombinations([1, -1], ["random", "foo"]);
});
实际输出:
> gilded-rose-kata@1.0.0 test
> jest
FAIL test/gilded-rose.spec.ts
● Test suite failed to run
test/gilded-rose.spec.ts:20:33 - error TS2339: Property 'toVerifyAllCombinations' does not exist on type 'JestMatchersShape<Matchers<void, () => string>, Matchers<Promise<void>, () => string>>'.
20 expect(doUpdateQuality).toVerifyAllCombinations(
~~~~~~~~~~~~~~~~~~~~~~~
预期输出:
// Jest Snapshot v1, (redacted URL)
exports[`should continue working as before 1`] = `
Object {
"-1,foo": "-1 bar",
"-1,random": "This is twisted…",
"1,foo": "foo #1",
"1,random": "random #1",
}
`;
如果 jest&jest-extended-snapshot 不合适,我应该改用什么?
我找到了一种解决方法,我知道这是错误的修复方法,但它确实对我有用。
我添加了一个文件jest.d.ts
:
declare global {
namespace jest {
interface Matchers<R> {
toVerifyAllCombinations(expected: string[], [], []): R
}
}
}
export {};
这是不可维护的。告诉 jest 它需要添加toVerifyAllCombinations
到匹配器的正确方法是什么?