Используйте Jest для проверки безопасного значения cookie - PullRequest
1 голос
/ 03 мая 2019

Ранее у меня был Jest-код для проверки значения незащищенного куки-файла. Выглядело это так:

expect(Cookie.get('myToken')).toBe('tokenvalue');

(Cookie в данном случае использует js-cookie api)

Однако я попытался обновить способ установки файла cookie, добавил флаг secure и установил его на true. Jest больше не может видеть этот cookie во время теста.

Какой лучший способ проверить это?

Я смотрел на такие вопросы, как Jest secure cookie?

Я также проверил код и проверил в браузере, что установлен флаг безопасности. Так что это просто проблема тестирования. Мой код для установки куки выглядит так:

Cookie.set('myToken', values.user.token, {
    path: '/',
    expires: new Date(new Date().getTime() + TOKEN_DURATION),
    secure: true
});

1 Ответ

1 голос
/ 03 мая 2019

Я попробовал ниже, и это сработало

import { * as cookies } from <...ur file where cookie logic is implementated>

import Cookies from 'js-cookie';

describe('cookies functionality', () => {

    it('should set the cookie correctly', () => {
        // create a mock function using jest.fn()
        const mockSet = jest.fn();

        // here we are trying to mock the 'set' functionality of Cookie
        Cookies.set = mockSet;

        // call the set method of Cookies 
        cookies.set('key', 'value');

        // check if the mock function gets called here
        expect(mockSet).toBeCalled();
    });
});

В основном модульные тесты написаны для проверки логики модуля, который мы тестируем. Если мы используем какую-либо внешнюю библиотеку, тогда мы можем просто посмеяться над ней и проверить, что она вызывается правильно. Модульный тест не должен беспокоиться о реальном выполнении этого библиотечного кода, в нашем случае, нам не следует беспокоиться о нашем модульном тесте о том, что Cookie действительно устанавливает данные. Если мы сможем проверить, что вызывается набор / получение файлов cookie, то этого должно быть достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...