"Expected 1 arguments, but got 2." except with mysterious workarounds
dskloetd opened this issue ยท 3 comments
Bug
package
version: 1.1.3node
version: 16.16.0npm
(oryarn
) version: npm 8.11.0
What I tried initially
Initially the only things I did before using messages in expect were
npm install --save-dev jest-expect-message
- Add
import "jest-expect-message";
tojest-setup.ts
.
This worked initially but after change the test and running the test again, I started getting:
> @dfinity/nns-dapp@2.0.17 test
> TZ=UTC jest "feature-flags.store.spec.ts"
FAIL src/tests/lib/stores/feature-flags.store.spec.ts
โ Test suite failed to run
src/tests/lib/stores/feature-flags.store.spec.ts:24:9 - error TS2554: Expected 1 arguments, but got 2.
24 `FeatureFlag ${feature} should be exported from feature-flags.store.ts`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Test Suites: 1 failed, 1 total
Tests: 0 total
Snapshots: 0 total
Time: 2.076 s
Ran all test suites matching /feature-flags.store.spec.ts/i.
What didn't work
I tried of all the following but the issue remained:
- Add
"jest-expect-message",
tosetupFilesAfterEnv:
injest.config.cjs
. - Add
"files": ["node_modules/jest-expect-message/types/index.d.ts"],
totsconfig.json
- Add
"jest/valid-expect": "off",
inrules:
in.eslintrc.cjs
.
What worked
- After running
jest --clearCache
the issue would go away, but return after making some changes and running the test again. npm install --save-dev @types/jest-expect-message
made the issue go away consistently. However, the package is deprecated and when I look inside the package it looks basically empty. So I don't understand how this can have an effect.- Using
import "jest-expect-message";
in the test file itself rather than injest-setup.ts
works. Is this the intended way to use it?
Any insight into what might be going on would be greatly appreciated.
If you want, you can see our entire setup at dfinity/nns-dapp@main...kloet/jem3
I had some luck by adding the package to my tsconfig types.
{
"compilerOptions": {
"types": ["jest", "jest-expect-message"]
}
}
There is an alternative to explicitly declared "types"
. You can declare jest-expect-message
as an @types/*
package in package.json
:
{
"devDependencies": {
"@types/jest-expect-message": "npm:jest-expect-message@*",
}
}
Run yarn install
after adding the line. All will work as if you have @types/jest-expect-message
installed, but the typings will come from jest-expect-message
package.
The suggestion from @mrazauskas worked for me. I was also able to remove the files
key from tsconfig.json. Maybe a documentation update is in order?