Jest тесты не работают после перехода на TypeScript - PullRequest
1 голос
/ 24 января 2020

Недавно я переместил проект из старого 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 позже. Однако я не знаю, какая комбинация зависимостей может привести к неправильному поведению.

Соответствующие зависимости, которые я обновил, в конечном итоге приведут к еще большему количеству неудачных тестов.

  • jest
  • ts-jest
  • babel-jest

Ответы [ 2 ]

0 голосов
/ 24 января 2020

Добавьте

preset: 'ts-jest/presets/js-with-babel',

к jest.config.js, так как вы используете ts-jest с babel-jest. Источник .

0 голосов
/ 24 января 2020

Вы пробовали добавить @types/jest? И добавив его в свой tsconfig.json:

"types": ["@types/node", "@nuxt/types", "@types/jest", "nuxt-i18n"]
...