[英]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.