5
votes

TypeError: impossible de lire la propriété 'cwd' d'undefined

J'écris un cas de test en utilisant jest et react-testing-library Lorsque j'exécute mon script de test, il génère une erreur comme ci-dessous

TypeError: Impossible de lire la propriété 'cwd' d'undefined

Maintenant, j'ai essayé presque tout pour résoudre ce problème, mais je l'ai fait pas trouver la cause de cela

J'ai essayé de changer la configuration, même si j'ai utilisé --no-cache mais encore même erreur

voici mon fichier de configuration

const { defaults } = require("jest-config");

module.exports = {
    testEnvironment: "node",
    // setupFiles: [
    //     "<rootDir>/../apollo-server-env/dist/index.js"
    // ],
    preset: "ts-jest",
    testMatch: null,
    testRegex: ".*test*\\.(ts|tsx|js)$",
    testPathIgnorePatterns: [
        "/node_modules/",
        "/dist/"
    ],
    transform: {
        "\\.(gql|graphql)$": "jest-transform-graphql",
        "\\.(ts|tsx)$": "ts-jest",
        // Use our custom transformer only for the *.js and *.jsx files
        "\\.(js|jsx)?$": "./transform.js",
        // future need to test with
        //  "^.+\\.(js|jsx|ts|tsx)$": "./transform.js",
        // ".+\\.(css|styl|less|sass|scss)$": "jest-css-modules-transform"
    },
    roots: [
        "packages",
        "packages-modules",
        "servers"
    ],
    moduleFileExtensions: [...defaults.moduleFileExtensions,
        "ts",
        "tsx",
        "js",
        "gql",
        "graphql"],
    moduleNameMapper: {
        '^__mocks__/(.*)$': '<rootDir>/../../__mocks__/$1',
        // This regex should match the packages that we want compiled from source
        // through `ts-jest`, as opposed to loaded from their output files in
        // `dist`.
        // We don't want to match `apollo-server-env` and
        // `apollo-engine-reporting-protobuf`, because these don't depend on
        // compilation but need to be initialized from as parto of `prepare`.
        '^(?!apollo-server-env|apollo-engine-reporting-protobuf)(apollo-(?:server|datasource|cache-control|tracing|engine)[^/]*|graphql-extensions)(?:/dist)?((?:/.*)|$)': '<rootDir>/../../packages/$1/src$2'
    },
    transformIgnorePatterns: [
        "/node_modules/(?!(@vscode)/).*/"
    ],
    clearMocks: true,
    globals: {
        __BACKEND_URL__: 'http://localhost:3010',
        __GRAPHQL_URL__: 'http://localhost:8085/graphql',
        /*"ts-jest": {
            tsConfig: "<rootDir>/tsconfig.json",
            //https://github.com/kulshekhar/ts-jest/issues/766,
            "diagnostics": {
                "warnOnly": true
            },
            "babelConfig": true
        }*/
    }
};```

Here is my test file 

`import * as React from 'react';
import {render, cleanup} from 'react-testing-library';
import {EditorComponent} from '../components/editor/editor-component';
import { Provider } from 'react-fela';
import { createRenderer } from 'fela';
import 'jest';
import 'jest-dom/extend-expect';
import { MockedProvider } from 'react-apollo/test-utils';
import {FILE_CONTENT_QUERY} from '../../../files-graphql-client/src/queries/index';

const mocks = [{
    request: {
        query : FILE_CONTENT_QUERY,
    },
    result: {
        data: {
            'getReleaseNotes': {},
        },
    },
}];

describe('<EditorComponent/>', () => {

    let componentObj, felaRenderer, props = {
        subscriber: jest.fn(),
        saveDelayFileChangesMutation: jest.fn(),
        loadFileContent: function () {
          return  new Promise(function(resolve) {
              setTimeout(function() {
                  resolve({data: {loadFileContent: {
                              'loadFileContent': {},
                          }}});
              }, 300);
          });
        },
        openingFiles: [{
            value : 'test',
            encoding: 'utf-8',
            oldValue : 'oldTest',
            deleted : false,
            addIgnore : 'test',
            editorId : 1,
            markdown: false,
            preview : true,
            preOpen : false,
            keepOpen : true,
            status : 'test',
            oversize : false,
            changed : true,
            changedEvent: {},
            diff : true,
            size : 25,
        }] as IContent[],
        allSave: false,
        rootPath: '',
        change: jest.fn(),
        actions: [],
        doneSaveAll: jest.fn(),
        changeEditorSubscribes: jest.fn(),
        updateEditorContent: jest.fn(),
        openDiffEditor: jest.fn(),
        closeConflicts: jest.fn(),
        closeEditor: jest.fn(),
        updateChangedContent: jest.fn(),
        setFinderOptions: jest.fn(),
        onOpenFile: jest.fn(),
        styles: {},
        subscribeToMore: jest.fn(),
    };

    beforeEach(() => {
        felaRenderer = createRenderer();
        componentObj = render(<MockedProvider mocks={mocks}><Provider renderer={felaRenderer}><EditorComponent {...props}/></Provider></MockedProvider>);
    });

    afterEach(cleanup);

});`



1 commentaires

Obtenez généralement le nom du fichier et le numéro de ligne où l'erreur a été générée à partir du message d'erreur. Comme vous ne montrez aucun code qui tente d'accéder à cwd , il est assez difficile de deviner ce qui se passe. Alors peut-être que vous pouvez publier le message d'erreur complet et publier la partie de votre code où l'erreur est générée.


3 Réponses :


0
votes

Le problème vient probablement de la version du module "babel-jest". Essayez de tout créer avec le module "plaisanterie". Ce sont mes dépendances dans mon package.json: ... "babel-jest": "^ 23", "plaisanterie": "22.4.3", ...


0 commentaires

11
votes

Installez simplement l'ancienne version de babel-jest: 22. Pas besoin de changer la version de jest, la dernière version peut être utilisée. La dernière version de babel-jest crée le problème

npm install --save-dev babel-jest@22.4.3


0 commentaires

0
votes

J'ai eu le même problème et la raison en était que babel-jest a été mis à niveau vers la dernière version sans mettre à niveau les autres modules liés à jest:

"babel-jest": "^26.6.3",
"jest": "^26.6.3",

Dans mon cas, la mise à niveau de jest vers la dernière version a résolu le problème:

"babel-jest": "^26.6.3",
"jest": "^23.6.0",


0 commentaires