类型错误:无法读取未定义的属性“cwd" [英] TypeError: Cannot read property 'cwd' of undefined

查看:30
本文介绍了类型错误:无法读取未定义的属性“cwd"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 jest 和 react-testing-library 编写测试用例当我运行我的测试脚本时,它会引发如下错误

I am writing test case using jest and react-testing-library When i run my test script it throws an error as below

TypeError: 无法读取未定义的属性 'cwd'

现在我已经尝试了几乎所有方法来解决这个问题,但没有找到原因

Now I have tried almost everything to solve this but did not find cause of this

我尝试更改配置,即使我已经使用 --no-cache 运行,但它再次抛出同样的错误

I tried to change config , Even I have run using --no-cache but again it throws the same error

这是我的配置文件

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

});`


推荐答案

只需安装旧版本的 babel-jest: 22.jest 无需更改版本,最新版本即可使用.最新版本的 babel-jest 产生了这个问题

Just install the older version of babel-jest: 22. No need to change the version of jest, latest version can be used. Latest version of babel-jest creates the problem

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

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

这篇关于类型错误:无法读取未定义的属性“cwd"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆