TypeError: Response не является конструктором в Expo SDK 33 - PullRequest
0 голосов
/ 04 июля 2019

После обновления до Expo SDK 33 с 32, есть проблемы с выполнением тестов в шутку. При издевательстве над возвращаемым значением Jest жалуется, что Response не является конструктором.

const mockGet = jest.fn();
mockGet.mockReturnValue(new Response(
    JSON.stringify({
        data: true
        }),
    { status: 200 }
    ));

Вот фрагмент текущего package.json соответствующих пакетов.

{
  "devDependencies": {
    "@babel/core": "^7.2.2",
    "@types/enzyme": "3.9.1",
    "@types/expo": "^32.0.13",
    "@types/jest": "23.3.10",
    "@types/react": "^16.5.0",
    "@types/react-native": "^0.57.20",
    "babel-core": "^7.0.0-0",
    "babel-eslint": "10.0.1",
    "babel-jest": "23.6.0",
    "babel-preset-expo": "^5.0.0",
    "enzyme": "3.9.0",
    "enzyme-adapter-react-16": "1.12.1",
    "enzyme-to-json": "3.3.5",
    "eslint": "5.11.0",
    "jest": "24.8.0",
    "jest-cli": "24.8.0",
    "jest-expo": "^33.0.0",
    "react-dom": "16.8.6",
    "raf": "3.3.2",
    "ts-jest": "^24.0.2",
    "tslint": "5.12.0",
    "typescript": "3.5.2"
  },
  "scripts": {
    "jest": "node node_modules/jest-expo/bin/jest.js --runInBand",
    "lint": "tslint src/**/*.ts",
    "test": "npm run jest && tslint src/**/*.tsx && eslint .",
  },
  "jest": {
    "preset": "jest-expo",
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js",
      "json"
    ],
    "setupFiles": [
      "raf/polyfill",
      "<rootDir>/test-setup.js"
    ],
    "transform": {
      "^.+\\.(js)$": "<rootDir>/node_modules/babel-jest",
      "\\.(ts|tsx)$": "ts-jest"
    }
  },
  "dependencies": {
    "expo": "^33.0.0",
    "react": "16.8.3",
    "react-native": "https://github.com/expo/react-native/archive/sdk-33.0.0.tar.gz",
  }

До обновления с 32 до 33 эти тесты с использованием объекта Response успешно работали. Теперь после обновления тестовый набор вызывает ошибку TypeError.

Единственными модулями, которые изменили версии, являются jest-expo (32.0.0 -> ^ 33.0.0), ts-jest (23.10.5 -> ^ 24.0.2), typescript (3.4.3 -> 3.5 .2) и наконец expo (^ 32.0.0 -> ^ 33.0.0). Модуль react-native также был обновлен из собственного архива Expo-sdk-32 до sdk-33.

Я пробовал разные версии модулей, пытаясь увидеть, где изменилось определение ответа. Например, я понизил jest-expo с v33 до v32, в то время как expo был v33. Это не помогло, так как привело к полному отказу комплекта тестов, как показано ниже.

● Test suite failed to run

    Cannot find module 'expo-react-native-adapter' from 'setup.js'

      at Resolver.resolveModule (node_modules/@jest/core/node_modules/jest-resolve/build/index.js:230:17)
      at Object.<anonymous> (node_modules/jest-expo/src/setup.js:203:6)

Будем весьма благодарны за любую помощь в том, как предотвратить появление ошибки TypeError во время тестов. Также может быть полезно отметить, что TypeScript не обнаруживает эту ошибку типа в intellij.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...