首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >模拟文件中的间谍函数

模拟文件中的间谍函数
EN

Stack Overflow用户
提问于 2020-04-14 22:32:29
回答 1查看 31关注 0票数 0

我在__mocks__文件夹中有一个名为StateService的模拟文件

代码语言:javascript
运行
复制
export default {
    goTo: jest.fn(),
    goToNewTab: jest.fn(),
    goToPreviousAppState: jest.fn(),
    reload: jest.fn()
}

在我的测试中,我想要侦测goToNewTab并检查函数是否已被调用。我现在正在做的是将模拟文件导入到我的测试中,然后,在我的测试本身中,我像这样调用expect:

代码语言:javascript
运行
复制
expect(StateService.goToNewTab).toHaveBeenCalled();

但是expect不会返回正值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-15 21:23:21

假设您有一个services/StateService.js格式的文件(为简单起见,我将只定义goToNewTab服务):

代码语言:javascript
运行
复制
function goToNewTab() {
    // Your logic here.
}

export default {
    goToNewTab
};

然后,在services/__mocks__/StateService.js中创建此模块的模拟

代码语言:javascript
运行
复制
export default {
    goToNewTab: jest.fn()
};

现在,您正在测试一个调用goToNewTab服务的模块。假设它被放在utils/navigation.js

代码语言:javascript
运行
复制
import StateService from '../services/StateService';

export default function() {
    StateService.goToNewTab();
}

使用模拟服务的此类模块的测试将如下所示:

代码语言:javascript
运行
复制
import StateService from '../services/StateService';
import navigation from './navigation';

jest.mock('../services/StateService');

it('Should mock call', () => {
    navigation();

    expect(StateService.goToNewTab).toHaveBeenCalled();
});

请注意,如果在测试中需要StateService模块,则需要显式调用模块的jest.mock,如documentation中所述。

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

https://stackoverflow.com/questions/61210187

复制
相关文章

相似问题

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