Тестирование декодирования jsonwebtoken

Я хочу смоделировать данные, возвращаемые из декодирования пакета jsonwebtoken NPM. Я думаю, что я также правильно издевался, но это дает null независимо от того, что я пытаюсь.

Это часть, которую я хочу проверить:

Это код, который я написал:

import jwt from 'jsonwebtoken'
jest.mock('jsonwebtoken')
// const { decode } = jwt
jest.mock('jsonwebtoken', () => ({
    ...jest.requireActual('jsonwebtoken'), // import and retain the original functionalities
    decode: jest.fn().mockReturnValue({ aud: 'bar', data: { seller_code: 343 } }), // overwrite verify
}));
// decode.mockReturnValue({ aud: 'bar', data: { seller_code: 343 } })
// const decode = jest.spyOn(jwt, 'decode');
// decode.mockImplementation(() => () => ({ verified: 'true' }));

describe.only('EncryptData', () => {
    it('Should extract token', () => {
        process.env.REACT_APP_DEVELOPER = "Random value2";
        const res = TokenExtractor({ headers: { authorization: 'Bearer Token33432' } }, undefined, () => { })
        console.info(res)
    })
})

Почему ты вообще хочешь издеваться над этим? Вы управляете значением токена, так как это входные данные для функции, поэтому вы можете сделать тот, который фактически декодирует значение, которое вы пытаетесь получить для возврата тестового двойника.

jonrsharpe 11.12.2022 10:21

Я не понял тебя полностью. Я хочу, чтобы decodedData контролировался, поэтому я хочу издеваться над результатом декодирования.

Rohit Kumar 11.12.2022 10:33

Это контролируется, потому что это чистая функция заголовка, который вы передаете. Вместо Bearer Token33432 передать заголовок с токеном, который на самом деле становится { aud: 'bar', data: { seller_code: 343 } }, тогда вам не нужно имитировать jsonwebtoken (и также можно проверить, что вы на самом деле взаимодействует с ним правильно).

jonrsharpe 11.12.2022 10:45

Хорошо, я понял вашу точку зрения, и она также работает нормально. Спасибо за ответ.

Rohit Kumar 11.12.2022 11:32
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
4
99
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

На него ответил @jonrsharpe.

Не нужно издеваться, мне просто нужно было передать токен, который в конечном итоге даст мне издевательский результат.

Попробуйте что-то вроде:

 const token = jwt.sign({ 
    aud: 'Random value2', 
    data: { seller_code: 343 } 
  }, 
  'secret', 
  { expiresIn: '1h' }
);

Другие вопросы по теме

Шуточное тестирование :mockResolveValue с задержкой
Mock Service Worker — ожидаемый распознаватель ответа, который вернет имитированный объект ответа, но получил неопределенное значение. Вместо этого будет использоваться исходный ответ
Импортировать «реагировать-toastify/dist/ReactToastify.css»;
Изменить useMemo при записи ввода в библиотеке тестирования реакции
Шутка: смоделируйте вложенную функцию, которая несколько раз возвращает пары ключ/значение
Как протестировать выпадающий компонент в реакции, используя шутку библиотеки тестирования реакции?
Jest не может найти модуль машинописного текста «../X.js» из «src/tests/X.test.ts»
Почему мой отчет о покрытии кода Jest недействителен?
Jest высмеял функцию обещания, возвращающую неопределенное значение
Модульное тестирование Angular: доступ к значению переменной Observable @Input, переданному из родительского компонента