Jest - ReferenceError: определение не определено - PullRequest
0 голосов
/ 27 октября 2018

Я пытаюсь использовать шутку, чтобы начать тестирование, но я столкнулся с этой ошибкой, которая, похоже, появляется у многих людей, но я не могу понять это.

Вот то, что я пытаюсь сделать (и я понимаю, что requirejs не поддерживается):

jest.mock("../widgets/", () => {
  return <button>button</button>;
});

describe('TextInput', () => {
  describe('when user inputs a value', () => {
    it('calls correct function to handle change', () => {
      const handleChange = jest.fn();
      const value = "test"
      const wrapper = shallow(<TextInput handleChange={handleChange} />);
      const textInputElement = wrapper.find("#textfield");
      textInputElement.simulate('change', {target: { value }})

      expect(handleChange).toHaveBeenCalledTimes(1);
    });
  });
});

import React from "react";
import ReactDOM from "react-dom";
import * as TestUtils from "react-dom/test-utils";
import { TextInput } from "../widgets/";

и вот мой package.json

"jest": {
    "collectCoverageFrom": [
      "src/**/*.js"
    ],
    "setupFiles": [

    ],
    "testMatch": [
      "**/src/**/?(*.)+(test).js"
    ],
    "testEnvironment": "node",
    "testURL": "http://localhost",
    "transform": {
      "^.+\\.(js)$": "./node_modules/babel-jest",
      "^.+\\.css$": "./config/jest/cssTransform.js",
      "^(?!.*\\.(js|jsx|mjs|css|json)$)": "./config/jest/fileTransform.js"
    },
    "transformIgnorePatterns": [
      "[/\\\\]node_modules[/\\\\].+\\.(js|jsx|mjs)$"
    ],
    "moduleNameMapper": {
      "^react-native$": "react-native-web"
    },
    "moduleFileExtensions": [
      "web.js",
      "js",
      "json",
      "web.jsx",
      "jsx",
      "node",
      "mjs"
    ]
 }

После запуска шутка, яполучите ошибку ReferenceError: define is not defined и вот более подробная ошибка: errorMsg

Буду признателен за любую помощь!Вот уже несколько дней тяну меня за волосы: - (

1 Ответ

0 голосов
/ 27 октября 2018

Редактировать : Просто понял, что в соответствии с документами toHaveBeenCalledTimes на самом деле должно работать.В любом случае вы можете попробовать mock.calls.length.


Насколько я знаю, утверждения о ложных функциях шуток не работают так

expect(handleChange).toHaveBeenCalledTimes(1);

Вы должны попробовать это

expect(handleChange.mock.calls.length).toBe(1);

Как описано в документах

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