首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模拟类方法只返回未定义的

模拟类方法只返回未定义的
EN

Stack Overflow用户
提问于 2022-08-18 18:45:30
回答 1查看 21关注 0票数 1

我正在测试一个React类组件,它依赖于检索用户auth的服务。

代码语言:javascript
复制
  async populateState() {
    const result = await authService.getUserAuthenticationStatus();
    const { user, isAuthenticated } = result;
    this.setState({
      isAuthenticated,
      user
    });
  }

因此,我想模拟getUserAuthenticationStatus的返回值,如下所示:

代码语言:javascript
复制
jest.mock('./components/api-authorization/AuthorizeService');

beforeAll(() => {
  jest.spyOn(AuthService, 'getUserAuthenticationStatus').mockReturnValue(
    Promise.resolve({
      isAuthenticated: true,
      user: {}
    })
  );
});

这里的问题是,在运行我的测试时,方法总是返回undefined,而不是我在测试中设置的模拟值。如果我们快速查看导出的成员,我们可以看到类正在被实例化,然后导出。这会是问题吗?

代码语言:javascript
复制
const authService = new AuthorizeService();
export default authService;
EN

回答 1

Stack Overflow用户

发布于 2022-08-18 19:41:07

我认为jest.mock在这里是不必要的。您可以简单地使用spyOn方法,因为您已经有了一个实例。

代码语言:javascript
复制
beforeAll(() => {
  jest.spyOn(authService, 'getUserAuthenticationStatus')
    // Returns promise no need to add manually
    .mockResolvedValue({ isAuthenticated: true, user: {} });
});

// And make sure you clear the mocks in the end. 
afterAll(() => jest.clearAllMocks());

Note:你在监视authService,而不是AuthService

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

https://stackoverflow.com/questions/73408050

复制
相关文章

相似问题

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