Как заставить Jest видеть вложенную функцию javascript?

У меня есть такая структура в моем проекте

|...
|Utils
    | Utils.js
    | Utils.test.js
|...

В Utils.js У меня есть func, я хочу проверить:

export const getSurroundingCells = (numRows, numCols, shipPositions) => {
    ...
    // some logic that calls cellIsSuitable()
    ...
    const cellIsSuitable = (position, shipPositions) => {
        ...
        // some logic that uses numRows, numCols
        ...
    }
}

Когда я хочу проверить это через Jest с Utils.test.js:

import {getSurroundingCells} from "./Utils";

const shipPositions = [[1, 1], [1, 2], [1, 3]];
const expectedSurroundingCells = [[2, 1], [2, 0], [1, 0], [0,0], [0,1], [0,2], [2,2]];

test('takes positions and returns surrounding cells', () => {
    expect(getSurroundingCells(10, 10, shipPositions)).toBe(expectedSurroundingCells);
});

Я получил:

ReferenceError: cellIsSuitable не определен

Как я могу заставить Jest чтобы увидеть мою вложенную функцию cellIsSuitable?

PS мой проект загрузился with create-react-app,

1 ответ

Решение

Переместите это к вершине или сделайте это регулярным function так что его лапы. Функция назначается после ее использования, но переменная объявляется.

export const getSurroundingCells = (numRows, numCols, shipPositions) => {

    const cellIsSuitable = (position, shipPositions) => {
        ...
        // some logic that uses numRows, numCols
        ...
    }

    ...
    // some logic that calls cellIsSuitable()
    ...
}
Другие вопросы по тегам