gpt4 book ai didi

javascript - 更新到 Jest 26 后模拟中断

转载 作者:行者123 更新时间:2023-12-03 15:47:55 25 4
gpt4 key购买 nike

我刚刚将 react-scripts 更新到 4.0,其中包括 Jest@26 和一些随附的测试包,这是 package.json 差异:
Package diff
升级后,一些 Jest 模拟已经开始失败。看起来模拟的返回值只是未定义?我错过了什么吗?这是失败的模拟之一

import useFetch from "use-http";

jest.mock("use-http", () => ({
__esModule: true,
default: jest.fn()
}));

describe("the user context", () => {
beforeAll(() => {
useFetch.mockReturnValue({
get: async () => Promise.resolve({ foo: 666 }),
response: { ok: true }
});
});
尝试使用“get”方法的测试失败: TypeError: Cannot destructure property 'get' of '(0 , _useHttp.default)(...)' as it is undefined.另一个不是默认的,不会为一次性模拟导入包:
jest.mock("_hooks", () => ({
useBaseUrls: jest.fn().mockReturnValue({
app: "bar"
})
}));
访问“app”属性的测试抛出 TypeError: Cannot read property 'app' of undefined

最佳答案

Jest 26 更改了 resetMocks 的默认行为为 true,这会在每次测试之前重置模拟状态。
您可以通过禁用 resetMocks 来恢复之前的行为。在 package.json

  "jest": {
"resetMocks": false
}
再次更改默认设置的讨论目前在他们的 Github 上是一个 Unresolved 问题: https://github.com/facebook/create-react-app/issues/9935

关于javascript - 更新到 Jest 26 后模拟中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65363796/

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