Reputation: 2912
Most of my tests have started failing since a recent npm install
.
Tried going up/down of various version but no joy.
$store
is no used directly in any of the components or tests.
I've tried several fixes from similar issues but none seem to work (ie extending types with a shim).
[email protected]
[email protected]
"@nuxtjs/composition-api": "^0.29.3",
...
"jest-serializer-vue": "^2.0.2",
"@types/jest": "^26.0.8",
"babel-jest": "^26.6.3",
"jest": "^27.5.1",
"ts-jest": "^27.1.4",
"vue-jest": "^3.0.4",
All fails have the same error.
FAIL pages/__tests__/registrationFormP1.spec.ts
● Test suite failed to run
node_modules/vuex-composition-helpers/src/util.ts:104:9 - error TS2339: Property '$store' does not exist on type 'ComponentInternalInstance | CombinedVueInstance<Vue, object, object, object, Record<never, any>>'.
104 const {$store} = 'proxy' in vm ? vm.proxy : vm;
...
Test Suites: 7 failed, 9 passed, 16 total
Tests: 61 passed, 61 total
jest.setup.ts
import Vue from 'vue';
import Vuex from 'vuex';
import * as CompositionApi from '@nuxtjs/composition-api/module';
import yapilyStyleguide from '@yapily/styleguide';
Vue.use(yapilyStyleguide);
Vue.use(Vuex);
Vue.use(CompositionApi);
Vue.prototype.$permission = () => jest.fn();
jest.config.ts
module.exports = {
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/$1',
'^~/(.*)$': '<rootDir>/$1',
'^vue$': 'vue/dist/vue.common.js',
},
moduleFileExtensions: ['ts', 'js', 'vue', 'json', 'jsx', 'json'],
transform: {
'^.+\\.(ts|tsx)?$': 'ts-jest',
'^.+\\.(js|jsx)$': 'babel-jest',
'.*\\.(vue)$': 'vue-jest',
'^.+\\.ts?$': 'ts-jest',
},
testMatch: ['<rootDir>/**/*.spec.js', '<rootDir>/**/*.spec.ts'],
collectCoverageFrom: ['<rootDir>/components/**/*.vue', '<rootDir>/pages/**/*.vue', '**/*/*.ts'],
coveragePathIgnorePatterns: ['/node_modules/', '/types/', '/proto/', '/.nuxt/'],
setupFilesAfterEnv: ['./jest.setup.ts'],
snapshotSerializers: ['jest-serializer-vue'],
transformIgnorePatterns: ['<rootDir>/node_modules/(?!vuex-composition-helpers)'],
};
Upvotes: 1
Views: 661
Reputation: 1
1.add typescript dependencty to your package json: npm install typescript 2. create tsconfig.json file with configuration:
{
"compilerOptions": {
"esModuleInterop" : true,
"sourceMap": true,
"module": "esnext",
"target": "es5",
"strict": true,
"moduleResolution": "node",
"baseUrl": ".",
"experimentalDecorators": true,
"downlevelIteration": true,
},
"include": ["**/*.ts", "**/*.vue"],
"exclude": [
"node_modules"
]
}
Upvotes: 0
Reputation: 416
looks like the issue is coming from @vue/composition-api
package, the interface ComponentInternalInstance
doesn't have type $store
create vuex-shims.d.ts
in root project
import { Store } from 'vuex'
declare module '@vue/composition-api' {
// declare your own store states
interface State {
count: number
}
// provide typings for `this.$store`
interface ComponentInternalInstance{
$store: Store<State> // or Store<any>
}
}
Upvotes: 1