Skip to content

TypeScript error when trying to provide a stateHandler with setup and teardown #1164

Description

@ghost91-

Software versions

Please provide at least OS and version of pact-js

  • OS: Arch Linux, Ubuntu, Windows (it's irrelevant)
  • Consumer Pact library: Pact JS v12.1.2
  • Provider Pact library: Pact JS v12.1.2
  • Node Version: v20.11.0

Issue Checklist

Please confirm the following:

  • I have upgraded to the latest
  • I have the read the FAQs in the Readme
  • I have triple checked, that there are no unhandled promises in my code and have read the section on intermittent test failures
  • I have set my log level to debug and attached a log file showing the complete request/response cycle
  • For bonus points and virtual high fives, I have created a reproduceable git repository (see below) to illustrate the problem

Expected behaviour

There are no TypeScript errors when trying to provide a stateHandler with setup and teardown to a Verifier.

Actual behaviour

Trying to provide a stateHandler with setup and teardown results in the following TypeScript error:

error TS2322: Type '{ setup: () => Promise<void>; teardown: () => Promise<void>; }' is not assignable to type 'StateHandler & ((state: string, params?: { [name: string]: string; } | undefined) => Promise<unknown>)'.
  Type '{ setup: () => Promise<void>; teardown: () => Promise<void>; }' is not assignable to type 'StateFuncWithSetup & ((state: string, params?: { [name: string]: string; } | undefined) => Promise<unknown>)'.
    Type '{ setup: () => Promise<void>; teardown: () => Promise<void>; }' is not assignable to type '(state: string, params?: { [name: string]: string; } | undefined) => Promise<unknown>'.
      Type '{ setup: () => Promise<void>; teardown: () => Promise<void>; }' provides no match for the signature '(state: string, params?: { [name: string]: string; } | undefined): Promise<unknown>'.

Steps to reproduce

import { Verifier } from '@pact-foundation/pact';

const verifier = new Verifier({
  stateHandlers: {
    'name of the stateHandler': { setup: async () => {}, teardown: async () => {} } // this line produces a TypeScript error
  }
});

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugIndicates an unexpected problem or unintended behaviortriageThis issue is yet to be triaged by a maintainer

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions