gpt4 book ai didi

javascript - 设置或分配 'window.location' 时的 Jest 错误

转载 作者:行者123 更新时间:2023-12-01 16:26:37 34 4
gpt4 key购买 nike

我将 Jest 库升级到 v25,所有检查位置更改的单元测试都失败了。
我查了a couple of issues opened on the Jest repository ,但我实际上并不明白如何解决这个问题。
调用 location.assign 的代码出现以下错误:

Error: Not implemented: navigation (except hash changes)

69 | // window.location.href = url;
> 70 | window.location.assign(url);
我想 Jest jsdom 窗口对象在更改位置方面不应再被视为真正的浏览器窗口。
我怎样才能解决这个问题?

我的发现:
  • 测试中的导航不起作用。所有这些在浏览器中工作的方法都没有在 JSDom 窗口中实现:
  • window.location.href = "https://myapp.com"
  • window.location.assign("https://myapp.com")
  • window.location.replace("https://myapp.com")
  • Object.defineProperty(window.location, "href", { writable: true, value: currentUrl }); window.location has been set as Unforgeable


  • 为了修复失败的测试,我使用了:
  • window.history.pushState({}, "title", "/testJest");
  • delete window.location; window.location = { assign: jest.fn() };it("should navigate to the new URL", () => { const myUrl = "http://some.url"; expect(window.location.assign).toHaveBeenCalledWith(myUrl); });
  • 最佳答案

    简而言之,“全局”在 Jest 中是“窗口”。
    利用:

    global.location.assign(url);
    相信您可以在 How can I mock the JavaScript window object using Jest? 中找到剩下的答案。 .
    此外,在这个问题上还有一个有趣的对话:
    I found window is global in Jest from Stack Overflow, but not mentioned in documentation #3692

    关于javascript - 设置或分配 'window.location' 时的 Jest 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59954101/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com