【问题标题】:Use Jest to test secure cookie value使用 Jest 测试安全 cookie 值
【发布时间】:2019-05-03 16:41:45
【问题描述】:

以前我有 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
});

【问题讨论】:

    标签: cookies https jestjs


    【解决方案1】:

    我在下面尝试过,它成功了

    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 是否被调用,那么它应该足够好了。

    【讨论】:

    • 谢谢!这行得通。你对如何测试这个背后的想法的解释也很清楚。它帮助很大。
    • 很高兴我能帮上忙 :)
    • 小补充:mock whole module 喜欢jest.mock('js-cookie'); 更容易。
    猜你喜欢
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2019-07-26
    • 2020-06-07
    • 2020-05-08
    相关资源
    最近更新 更多