模块方向键不允许导入我的测试实用程序 [英] moduleDirectories key does not make it possible to import my test utils

查看:0
本文介绍了模块方向键不允许导入我的测试实用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想用Jest和@testing-lib/react-native测试我的EXPO Reaction Native应用程序。

我的package.json中有以下设置。

"jest": {
    "preset": "jest-expo",
    "moduleDirectories": [
      "node_modules",
      "test-utils"
    ]
  },

我的文件夹结构如下:

├──node_modules/
├──test-utils/
├──src/
└──package.json

src/包含测试文件。我正在使用src/index.test.js中的这个简单测试测试我的配置:

import { assert } from 'test-utils';

const sum = (a, b) => a + b;

describe('sum', () => {
  assert({
    given: 'two numbers',
    should: 'add the numbers',
    actual: sum(1, 3),
    expected: 4,
  });
});

其中assert位于test-utils/index.js

const assert = ({
  given = undefined,
  should = '',
  actual = undefined,
  expected = undefined,
} = {}) => {
  it(`given ${given}: should ${should}`, () => {
    expect(actual).toEqual(expected);
  });
};

export { assert };

如果我运行测试,则会收到错误:

Cannot find module 'test-utils' from 'index.test.js'

为什么?我的意思是我已经配置了moduleDirectories键?🤔您如何解决这个问题?我非常希望能够将assert导入为绝对路径,而不是相对路径。

推荐答案

我找到了解决方案。目前这些文档就是不好。

如果您有此文件夹结构

├──node_modules/
├──src/
├──utils/
└──package.json

然后,您希望将模块目录命名为:

"jest": {
  "preset": "jest-expo",
  "setupFilesAfterEnv": [
    "@testing-library/react-native/cleanup-after-each"
  ],
  "moduleDirectories": [
    "node_modules",
    "utils"
  ]
},

然后utils/内,您希望拥有.js文件test-utils.js。然后您可以在测试中从test-utils导入。

因此,关键是您从中导出的模块的名称必须是.js文件的名称。并且您放入moduleDirectories的文件夹必须包含此.js文件。

这篇关于模块方向键不允许导入我的测试实用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆