簡體   English   中英

如何用 Fullstory 的玩笑來模擬“窗口”

[英]How to mock "window" with jest for Fullstory

我有一個像這樣的 function,我只是想不出如何模擬這個用例。 我以這種方式獲得了 function,所以我不確定是否可以更改它,除非有更好的方法。

Function來測試——window是全局的,不用傳入

getWindowNamespace() {
    if (!window.namespace) {
        return false;
    }
    return window[window.namespace];
}

這就像相同的 window object 被用作兩種不同的類型,這真的讓我很困惑。

到目前為止我的測試邏輯(只有相關代碼,所以這不會按原樣運行,但我可以根據需要提供更多信息。現在,我能夠測試第一個否定案例,但不能測試最終的返回行。

const mockWindow = (namespace) => {
    global.window = Object.create(window);
    Object.defineProperty(window, 'window', {
        value: {
            namespace: namespace,
        },
        enumerable: true,
        configurable: true,
        writable: true,
    });
    window[namespace] = {};
    window[namespace].log = jest.fn();
}

也許我需要將 window 創建為數組? 在 defineProperty 中以不同方式定義值?

預先感謝您的任何幫助!

您可能需要 spyOn global.window.get並返回一個namespace和將返回window[window.namespace]的數據

這將允許您返回並模擬global.window的值


describe('test', () => {
    jest.spyOn(global, 'window', 'get').mockImplementation(() => ({
        namespace: 'test1',
        test1: 'value' // <<< this is the custom field value depend on whatever namespace is
    }))
    it('should return false', () => {
        expect(getWindowNamespace()).toBe('value');
    });
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM