Недавно я переместил проект из старого JavaScript в TypeScript. Раньше каждый тест проходил нормально. Сразу после изменения некоторые контрольные примеры просто сломались и я не могу понять почему. Я использую Vue. js вместе с vue-test-utils
и jest
.
jest.config. js
module.exports = {
collectCoverageFrom: [
'/src/**/*.{js,jsx,vue}',
'!**/node_modules/**',
'!**/vendor/**',
],
moduleFileExtensions: [
'ts',
'js',
'json',
'vue',
],
transform: {
'.*\\.(vue)$': 'vue-jest',
'^.+\\.js$': 'babel-jest',
'^.+\\.ts$': 'ts-jest',
},
transformIgnorePatterns: [
'<rootDir>/node_modules/(?!vuex-class-modules).+\\.js$',
],
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
},
setupFilesAfterEnv: [
'@testing-library/jest-dom/extend-expect',
],
};
Фрагмент пример теста, который сейчас не проходит, который работал нормально ранее.
some.test. js
function mountStore(loggedInState) {
const store = new Vuex.Store({
modules: {
customer: {
namespaced: true,
state: {
isLoggedIn: loggedInState,
},
actions,
},
},
});
return shallowMount(Component, {
localVue,
store,
router,
stubs: { 'router-link': RouterLinkStub },
});
}
describe('Test with customer logged in at beginning', () => {
let wrapper;
beforeEach(() => {
wrapper = mountStore(true);
});
it('should redirect to home if user is logged in on init', () => {
expect(wrapper.vm.$route.name).toBe('Home');
});
});
Относительно этого специфика c В тестовом случае результат выглядит следующим образом.
expect(received).toBe(expected) // Object.is equality
Expected: "Home"
Received: null
Я также заметил, что обновление всех зависимостей (включая некоторые зависимости Jest) приводит к еще большему количеству неудачных тестов. Поэтому я ожидаю, что это (вероятно) будет причиной, так как я только что добавил поддержку TypeScript позже. Однако я не знаю, какая комбинация зависимостей может привести к неправильному поведению.
Соответствующие зависимости, которые я обновил, в конечном итоге приведут к еще большему количеству неудачных тестов.