Cookies 使用Jest测试安全cookie值

Cookies 使用Jest测试安全cookie值,cookies,https,jestjs,Cookies,Https,Jestjs,以前我有Jest代码来测试非安全cookie的值。看起来是这样的: Cookie.set('myToken', values.user.token, { path: '/', expires: new Date(new Date().getTime() + TOKEN_DURATION), secure: true }); expect(Cookie.get('myToken')).toBe('tokenvalue') (本例中的Cookie正在使用js Cookiea

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

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

(本例中的
Cookie
正在使用
js Cookie
api)

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

最好的测试方法是什么

我看过这样的问题

我还测试了代码,并在浏览器中检查是否设置了安全标志。所以这只是一个测试问题。我设置cookie的代码如下所示:

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

我在下面试了试,效果很好

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}
从“js cookie”导入cookie;
描述('cookies功能',()=>{
它('应该正确设置cookie',()=>{
//使用jest.fn()创建一个模拟函数
const mockSet=jest.fn();
//在这里,我们试图模拟Cookie的“set”功能
Cookies.set=mockSet;
//调用Cookies的set方法
cookies.set('key','value');
//检查是否在此处调用模拟函数
expect(mockSet).toBeCalled();
});
});

基本上,编写单元测试是为了测试我们正在测试的单元的逻辑。如果我们使用任何外部库,那么我们可以模拟它并测试它是否被正确调用。单元测试不应该为库代码的实际执行而烦恼,在我们这里的例子中,我们不应该在单元测试中为Cookie真正设置数据而烦恼。如果我们可以测试调用的cookies集/获取,那么它应该足够好。

谢谢!这起作用了。你对如何测试这一点背后的想法的解释也非常清楚。这帮了大忙。很高兴我能帮上忙:)小补充:更容易喜欢
jest.mock('js-cookie')