带有 Jest 的组件中的javascript模拟导入

标签 javascript node.js testing mocking jestjs

知道如何模拟“导入”进行测试吗? 我现在用 jest。

即:

//browser.js
export const browser = {
    id: undefined
};
export const getBrowser = function() {
    return browser;
};


//fetch-data.js
//code that uses the browser and I wanna test
import {getBrowser} from './../components/browser';

export const fetchData = function() {
     const browser = getBrowser();
     return Object.assign({dontcare:1}, browser);
};



//My test... Im using jest
import {fetchData} from './../fetch-data.js';
    expect(fetchData()).toBe({......});
};

现在在测试文件中,我想模拟 browser 组件的响应......

有什么想法吗?

谢谢!

最佳答案

在其中一个帖子的帮助下最终解决了它,但使用 Sinnon.js 的方式不同

1) 我在测试中导入了浏览器组件:

import * as browserModule from './../components/browser';

2) 现在在我的测试中我将模拟我想要的方法:

 sinon.stub(browserModule, 'getBrowser').returns({id: 1});

3) 从这里一切都很好,我调用了我的测试对象,它得到了正确的模拟响应:)

关于带有 Jest 的组件中的javascript模拟导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48092284/

相关文章:

javascript - 无法从 Node 中的 csv 文件流中读取重音字符

go - 如何编写干净的集成测试

javascript - 类型错误 : data base object cannot be found

javascript - 显示一个 asp :ModalPopupExtender using jQuery

javascript - javascript/typescript/Angular 中的逗号分隔符

node.js - Sequelize 关联问题

node.js - 在登录屏幕中禁用 stormpath 的创建帐户选项

javascript - Jest - 如何为每个测试重置对象状态?

javascript - react 测试 : Cannot read property 'toLowerCase' of undefined

javascript - 为什么我的 Backbone.js 代码片段找不到 DOM 模型?