typescript - Vitest ეცინი გაფართოება


ვცადო შევქმნა expect.extend Vitest-ში, ვცადე დოკუმენტაციის დაყვანა

მე დავაარსე vitest.d.ts ფაილი, სადაც გამოვაცხადე ეს:

interface CustomMatchers<R = unknown> {
  toPassGuard(guardFunc: (record: unknown) => boolean): boolean;
  toPassGuardArray<T = unknown>(guardFunc: (record: T) => boolean): boolean;

}

declare module 'vitest' {
  interface Assertion<T = any> extends CustomMatchers<T> {}
  interface AsymmetricMatchersContaining extends CustomMatchers {}
}

ამავდროულად, აქ მაინც მივიღებ ტიპის შეცდომას expect(arrOfSettings).toPassGuardArray(isSettings)

Property 'toPassGuardArray' does not exist on type 'Assertion<string| undefined>[], any>'

მე ვიპოვე ალტერნატივა, სადაც მე Assertion შევცვალე JestAssertion (რომელიც არის ქვეპაკეტი), და ეს მუშაობს, მაგრამ მხოლოდ მაშინ, თუ მაჩერი განმარტება იმავე ფაილშია, სადაც მე ვიყენებ მას,

მაგალითი :

expect.extend({
  toPassGuardArray(received, guardFunc) {
    const failedItems = received.filter((receiveItem) => !guardFunc(receiveItem))
    const pass = failedItems.length === 0
    return {
      pass,
      message: () => `${failedItems.length} did${!pass ? ' not' : ''} pass guard ${guardFunc.name}`,
      actual: (`${failedItems.map((item) =>  item)} to pass guard`).substring(0, 300)
    }
  }
})

ახლა ეს expect(allEnriched).toPassGuardArray<Asset>(guard) მუშაობს მხოლოდ მაშინ, თუ expect.extend იმავე ფაილშია, წინააღმდეგ შემთხვევაში მე ვიღებ

Error: Invalid Chai property: toPassGuardArray

ჩაი ასევე სუბ-პაკეტია, ამიტომ აქ კონფლიქტია, გგონია...

პასუხი #1

კარგი, გავიგე, მე უნდა მიმეწერა ყველა კასტომური აპარატურა სეტაპ ფაილში და შემემატებინა კონფიგურაციაში

export default defineConfig({
  test: {
    setupFiles: ['filesWhereIDeclare.js'],
  },
});