0

我正在尝试编写 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…&quot;,
  "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到匹配器的正确方法是什么?

4

0 回答 0