代码之家  ›  专栏  ›  技术社区  ›  Leon Gaban

Jest在我的测试中找不到导入的组件

  •  0
  • Leon Gaban  · 技术社区  · 6 年前

    我的分支: https://github.com/Futuratum/moonholdings.io/tree/JestTests

    我在用 NextJS 来构建我的应用程序,还可以使用typescript。所以没有我编辑的webpack文件,下一个处理。下面是完整的package.json。

    我的超级简单测试(vscode中没有错误):

    import React from 'react';
    import { shallow } from 'enzyme';
    import toJson from 'enzyme-to-json';
    
    import Astronaut from './Astronaut';
    
    describe('<Astronaut /> component', () => {
      console.log('Astronaut', Astronaut);
      describe('when rendering', () => {
        const wrapper = shallow(<Astronaut {...props} />);
    
        it('should render a component matching the snapshot', () => {
          const tree = toJson(wrapper);
          expect(tree).toMatchSnapshot();
          expect(wrapper).toHaveLength(1);
        });
      });
    });
    

    文件夹结构:

    enter image description here

    错误:

    enter image description here

    有没有想过为什么要抱怨?

    我的玩笑安排:

    "jest": {
        "setupTestFrameworkScriptFile": "<rootDir>/jest.setup.js",
        "testPathIgnorePatterns": [
          "<rootDir>/.next/",
          "<rootDir>/node_modules/"
        ],
        "transform": {
          "\\.(gql|graphql)$": "jest-transform-graphql",
          ".*": "babel-jest",
          "^.+\\.js?$": "babel-jest"
        }
      }
    

    Jest.StupU.js

    import { configure } from 'enzyme';
    import Adapter from 'enzyme-adapter-react-16';
    
    configure({ adapter: new Adapter() });
    

    包装袋

    {
      "name": "moonholdings.io",
      "version": "2.0.0",
      "description": "Moonholdings.io",
      "main": "index.ts",
      "scripts": {
        "dev": "next -p 7777",
        "build": "next build",
        "start": "next start -p 8000",
        "test": "NODE_ENV=test jest --watch",
        "test-win": "SET NODE_ENV=test&& jest --watch",
        "heroku-postbuild": "next build"
      },
      "author": "Futuratum",
      "license": "ISC",
      "dependencies": {
        "@zeit/next-sass": "^1.0.1",
        "@zeit/next-typescript": "^1.1.1",
        "apollo-boost": "^0.1.16",
        "apollo-client": "^2.4.2",
        "decko": "^1.2.0",
        "downshift": "^2.2.3",
        "enzyme": "^3.6.0",
        "enzyme-adapter-react-16": "^1.5.0",
        "graphql": "^14.0.2",
        "graphql-tag": "^2.9.2",
        "graphql-tools": "^4.0.0",
        "lodash.debounce": "^4.0.8",
        "next": "^7.0.2",
        "next-with-apollo": "^3.1.3",
        "node-sass": "^4.11.0",
        "nprogress": "^0.2.0",
        "prop-types": "^15.6.2",
        "react": "^16.7.0",
        "react-adopt": "^0.6.0",
        "react-apollo": "^2.2.1",
        "react-dom": "^16.7.0",
        "react-transition-group": "^2.5.0",
        "styled-components": "^3.4.9",
        "tslint": "^5.12.1",
        "tslint-react": "^3.6.0",
        "typescript": "^3.2.4",
        "waait": "^1.0.2"
      },
      "devDependencies": {
        "@babel/plugin-proposal-decorators": "^7.3.0",
        "@babel/preset-typescript": "^7.1.0",
        "@types/next": "^7.0.6",
        "@types/react": "^16.7.20",
        "@types/react-dom": "^16.0.11",
        "@types/react-redux": "^7.0.0",
        "@types/zeit__next-typescript": "^0.1.1",
        "babel-core": "^7.0.0-bridge.0",
        "babel-jest": "^23.6.0",
        "babel-plugin-styled-components": "^1.7.1",
        "casual": "^1.5.19",
        "enzyme-to-json": "^3.3.4",
        "jest": "^23.6.0",
        "jest-transform-graphql": "^2.1.0"
      },
      "jest": {
        "setupTestFrameworkScriptFile": "<rootDir>/jest.setup.js",
        "testPathIgnorePatterns": [
          "<rootDir>/.next/",
          "<rootDir>/node_modules/"
        ],
        "transform": {
          "\\.(gql|graphql)$": "jest-transform-graphql",
          ".*": "babel-jest",
          "^.+\\.js?$\\.tx?$\\.tsx?$": "babel-jest"
        }
      }
    }
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Marwane Boudriga    6 年前

    您也可以将 __tests__ 文件夹在“宇航员”文件夹中,然后将austronaut.tsx作为“.../astronate.tsx”导入测试。

        2
  •  0
  •   Leon Gaban    6 年前

    好的,为了让这个有效,我需要把我的测试转移到 __tests__ 在根部。然后导入组件,如下所示:

    import Astronaut from '../components/Astronaut/Astronaut.tsx';