Я пытаюсь протестировать функцию makeRandomComputerMove, однако я не могу правильно смоделировать функцию getRandomNumber, экспортированную из того же модуля, с помощью Jest.
Если я вызываю функцию getRandomNumber непосредственно в тестовом файле, она работает, как и ожидалось, но у меня сложилось впечатление, что насмешка над функцией в тестовом файле должна заставить внутреннюю функцию makeRandomComputerMove использовать фиктивное значение.
Буду признателен за любую помощь.
test.ticTacToe. js
describe('TicTacToe Utils', () => {
const randomMock = jest.spyOn(Utils, 'getRandomNumber')
.mockReturnValueOnce(0)
.mockReturnValueOnce(1)
const board = [
[['X'], [], []],
[[], [], []],
[[], [], []]
]
it('makeRandomComputerMove', () => {
const location = Utils.makeRandomComputerMove(board)
// expect(location.x).toBe(0)
// expect(location.y).toBe(1)
})
})
ticTacToe. js
export const getRandomNumber = (min, max) => {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
export const makeRandomComputerMove = (board) => {
const location = {};
location.x = getRandomNumber(0, board.length - 1);
location.y = getRandomNumber(0, board.length - 1);
if (location.x < 3 && location.y < 3) {
return location
}
return makeRandomComputerMove(board);
};