web-dev-qa-db-ja.com

TypeError:未定義のプロパティ 'cwd'を読み取れません

Jestとreact-testing-libraryを使用してテストケースを書いています。テストスクリプトを実行すると、次のようなエラーがスローされます。

TypeError: Cannot read property 'cwd' of undefined

今、私はこれを解決するためにほぼすべてを試しましたが、この原因を見つけられませんでした

設定を変更しようとしましたが、--no-cacheを使用して実行した場合でも、同じエラーがスローされます

これが私の設定ファイルです

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);

});`


5
Suhani Shah

おそらく問題は、「babel-jest」モジュールのバージョンです。それを「jest」モジュールで同化してみてください。これらは私のpackage.jsonの私の依存関係です:... "babel-jest": "^ 23"、 "jest": "22.4.3"、...

0