Функция работает, но не проходит тест Jest - PullRequest
0 голосов
/ 26 июня 2019

Я новичок в Jest, сейчас просто поиграюсь с некоторыми тестами существующих функций.У меня есть функция, которая берет массив данных (из файла JSON) и сопоставляет его с определенными позициями, точками построения.

Это функция plotPoints:

function plotPoints(data) {
  console.log(data.subset[0]);
  const sub0 = data.subset[0];
...

plotPoints принимаетДанные JSON в качестве аргумента.Функция работает, потому что она правильно регистрирует данные в консоли, а другие функции работают, как и ожидалось.

Но тестирование всегда заканчивается неудачей:

plotPoints.test.js

import plotPoints from '../functions/plotPoints';
const dataSrc = require('../../public/data/jsonfile.json');

test('it finds the plot data', () => {
  expect(plotPoints(dataSrc)).toBeDefined();
});

Возвращая эту ошибку:

it finds the plot data

TypeError: Cannot read property '0' of undefined

  3 | // takes raw JSON data and builds a big object with matching joint pairs
  4 | function plotPounts(data) {
> 5 |   const sub0 = data.subset[0];
    |                ^
  6 |


  at plotPoints (src/functions/plotPoints.js:5:16)
  at Object.<anonymous>.test (src/tests/plotPoints.test.js:5:10)

Я подумал, что, возможно, функция работала в тесте до загрузки jsonfile.json, поэтому я попытался написать асинхронный тест на основе документов Jest:

test('it finds the correct joints', done => {
  function callback(input) {
    expect(input).toBeDefined();

    done();
  }
  mapJoints(callback(dataSrc));
});

Но это не имело значения.Есть ли какая-то причина, по которой функция без проблем находит в массиве data.subset[0], но не в тестах?

1 Ответ

0 голосов
/ 26 июня 2019

Вы проверили, определено ли dataSrc?

Попробуйте заменить требуемое на:

import dataSrc from '../../public/data/jsonfile.json'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...