Я новичок в 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]
, но не в тестах?