首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新到Jest 26后被破坏的Mocks

更新到Jest 26后被破坏的Mocks
EN

Stack Overflow用户
提问于 2020-12-19 04:55:48
回答 1查看 1K关注 0票数 8

我刚刚将react-scripts更新到4.0,其中包括Jest@26和一些附带的测试包,下面是package.json的不同之处:

升级后,一些Jest mock已经开始失败了。似乎模拟的返回值是未定义的?我是不是遗漏了什么?以下是其中一个失败的模拟

代码语言:javascript
复制
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.

还有一个不是默认的,不会为一次性mock导入包:

代码语言:javascript
复制
jest.mock("_hooks", () => ({
    useBaseUrls: jest.fn().mockReturnValue({
        app: "bar"
    })
}));

访问“app”属性的测试抛出TypeError: Cannot read property 'app' of undefined

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-04 14:48:17

Jest 26将resetMocks的默认行为更改为true,这会在每次测试之前重置模拟状态。

您可以通过在package.json中禁用resetMocks来恢复到以前的行为

代码语言:javascript
复制
  "jest": {
    "resetMocks": false
  }

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

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65363796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档