使用Jest测试安全的Cookie值

时间:2019-05-03 16:41:46

标签: cookies https jestjs

以前,我有Jest代码来测试非安全cookie的值。看起来像这样:

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

(本例中的Cookie使用的是js-cookie API)

但是,我尝试更新设置cookie的方式,并添加了secure标志并将其设置为true。测试运行时,Jest不再能看到此cookie。

测试它的最佳方法是什么?

我看过类似Jest secure cookies?

的问题

我还测试了代码,并在浏览器中检查了安全标志已设置。因此,这只是一个测试问题。我设置Cookie的代码如下:

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

1 个答案:

答案 0 :(得分:0)

我在下面尝试过,并且有效

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实际设置数据而受到困扰。如果我们可以测试是否调用了set / get cookie,那么就足够了。