首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jest中模拟i18next模块

如何在jest中模拟i18next模块
EN

Stack Overflow用户
提问于 2018-02-14 22:04:14
回答 1查看 4.4K关注 0票数 3

我正在为现有的Vue项目设置测试环境,并决定使用vue- test -utils进行jest。

一切都安装好了,但是当我导入组件时,我希望在.test.js文件中测试,并将组件添加到测试工具中,如下所示:

let wrapper = shallow(Home)

测试套件崩溃,错误为:TypeError: Cannot read property 'i18next' of undefined

我决定模拟i18next模块,但我在模拟时遇到了问题。我的mock看起来像这样:

代码语言:javascript
复制
jest.mock('i18next', () => ({
  init: () => {},
  use: () => {},
  t: k => k
}));

但我总是得到错误:

代码语言:javascript
复制
TypeError: Cannot read property 'init' of undefined

      35 |
      36 | i18next
    > 37 |      .use(Locize)
      38 |      .init(i18nextOptions);
      39 |
      40 | export default new VueI18Next(i18next);

我能以某种方式解释模拟i18next模块的正确方法,以便我的包装器对象可以初始化吗?另外,如果我做错了什么,请给我指出正确的方向。下面是完整的测试用例:

代码语言:javascript
复制
import { shallow, mount, createLocalVue } from '@vue/test-utils';
import Home from '../../src/app/pages/home/index/index.vue';

jest.mock('i18next', () => ({
  init: () => {},
  use: () => {},
  t: k => k
}));

describe('Home Component', () => {

  let wrapper;

  beforeEach(() => {
    wrapper = shallow(Home);
  });

  it('something', () => {
    console.log('bleh');
    expect(wrapper.contains('div')).toBe(true);
  });

});

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-02-14 22:44:49

错误Cannot read property 'init' of undefined发生在i18next.use(Locize)的结果上,而不是i18next对象上。尝试将您的模拟更新为:

代码语言:javascript
复制
jest.mock('i18next', () => ({
  use: () => {
    init: () => {
      t: k => k,
      on: () => {}
    }
  }
}));

我使用这个文件作为对这个模拟的引用:panter/vue-i18next/src/i18n.js

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

https://stackoverflow.com/questions/48789110

复制
相关文章

相似问题

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