TypeError: Невозможно прочитать свойство 'prototype' из неопределенного + Jest + NodeJS - PullRequest
0 голосов
/ 04 декабря 2018

Я использую jest для модульного тестирования в API-интерфейсах nodeJS.Я установил jest и также добавил его в скрипт в package.json.Но столкнувшись с проблемой:

FAIL api / test / math.test.js ● Не удалось запустить набор тестов

TypeError: Cannot read property 'prototype' of undefined

 at module.exports (node_modules/request-promise-core/configure/request2.js:34:48)
 at Object.<anonymous> (node_modules/request-promise-native/lib/rp.js:15:1)
 at Object.<anonymous> (node_modules/jsdom/lib/api.js:6:17)

 Test Suites: 1 failed, 1 total
 Tests:       0 total
 Snapshots:   0 total
 Time:        0.091s
 Ran all test suites.
 npm ERR! code ELIFECYCLE
 npm ERR! errno 1
 npm ERR! chain-analytics@1.0.0 test: `jest`
 npm ERR! Exit status 1
 npm ERR!
 npm ERR! Failed at the sample-project@1.0.0 test script.
 npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

Ниже приведены примеры классов для меня:

math.js:

  const sum = (a, b) => a + b
  const mul = (a, b) => a * b
  const sub = (a, b) => a - b
  const div = (a, b) => a / b

  export default { sum, mul, sub, div };

math.test.js:

 const  {sum, mul, sub, div}  = require("./math")

 test("Adding 1 + 1 equals 2", () => {
   expect(sum(1, 1)).toBe(2)
 })
 test("Multiplying 1 * 1 equals 1", () => {
   expect(mul(1, 1)).toBe(1)
 })
 test("Subtracting 1 - 1 equals 0", () => {
   expect(sub(1, 1)).toBe(0)
 })
 test("Dividing 1 / 1 equals 1", () => {
   expect(div(1, 1)).toBe(1)
 })

Любые предложения приветствуются.Спасибо!

Ответы [ 3 ]

0 голосов
/ 04 декабря 2018

Экспорт использует импорт.module.exports даст вам require.

Модули и требуется

Вы должны изменить math.js либо:

module.exports = { sum, mul, sub, div };

Длякод:

const {sum, mul, sub, div} = require("./math");

Импорт / Экспорт

Или вы должны использовать:

import { sum, mul, sub, div } from "./math";

Для кода:

export default { sum, mul, sub, div };

Это просто правильная комбинация.

0 голосов
/ 11 февраля 2019

q.js:

function sum(a, b) {
  return a + b;
}

module.exports = sum;

q.test.js:

const sum = require('../src/q');

test('adds 1 + 2 to equal 3', () => {
  const result = sum(1, 3);
  expect(result).toBe(3);
});

Даже это дает ошибку, это точно скопировано из документации jest!https://jestjs.io/docs/en/getting-started

enter image description here

0 голосов
/ 04 декабря 2018

Измените ваш экспорт в math.js на:

module.exports = { sum, mul, sub, div };

NodeJS не поддерживает синтаксис импорта / экспорта ES6, я считаю.

...