相关疑难解决方法(0)

如何使用Jest模拟ES6模块导入?

我开始认为这是不可能的,但无论如何我想问.

我想测试我的一个ES6模块以特定方式调用另一个ES6模块.使用Jasmine这非常容易 -

应用代码:

// myModule.js
import dependency from './dependency';

export default (x) => {
  dependency.doSomething(x * 2);
}
Run Code Online (Sandbox Code Playgroud)

和测试代码:

//myModule-test.js
import myModule from '../myModule';
import dependency from '../dependency';

describe('myModule', () => {
  it('calls the dependency with double the input', () => {
    spyOn(dependency, 'doSomething');

    myModule(2);

    expect(dependency.doSomething).toHaveBeenCalledWith(4);
  });
});
Run Code Online (Sandbox Code Playgroud)

什么与Jest相当?我觉得这是一件非常简单的事情,但我一直在试图弄清楚我的头发.

我最接近的import是用requires 替换s,并在测试/函数内移动它们.这些都不是我想要做的事情.

// myModule.js
export default (x) => {
  const dependency = require('./dependency'); // yuck
  dependency.doSomething(x * 2);
}

//myModule-test.js
describe('myModule', () => {
  it('calls the …
Run Code Online (Sandbox Code Playgroud)

javascript mocking node.js ecmascript-6 jestjs

227
推荐指数
7
解决办法
14万
查看次数

Node Jest-必须指定配置路径

我正在将 Jest 测试用例运行到一个 ReactJS 项目中。我正在尝试在 VS code 中调试我的笑话测试用例。测试在命令行上运行正常。但是当我在 VS Code 中启动调试器时,我看到错误。

启动.json

{
        "version": "0.2.0",
        "configurations": [
            {
                "type": "node",
                "request": "launch",
                "name": "Jest Tests",
                "program": "${workspaceRoot}/xxx/xxx/node_modules/jest/bin/jest",
                "args": [
                    "-i"
                ],


                "internalConsoleOptions": "openOnSessionStart",
                "outFiles": [
                    "${workspaceRoot}/xxx/xxx/**/*"
                ]
            }
        ]
    }
Run Code Online (Sandbox Code Playgroud)

错误

Debugger listening on ws://127.0.0.1:31182/2bf113f1-002f-49ed-ad91-5510affd172a
Debugger attached.
Error: Could not find a config file based on provided values:
path: "/Users/xxx/xxx/xxx-ui"
cwd: "/Users/xxx/xxx/xxx-ui"
Configh paths must be specified by either a direct path to a config
file, or a path to …
Run Code Online (Sandbox Code Playgroud)

node.js jestjs

8
推荐指数
2
解决办法
1万
查看次数

Babel、Jest 和 webpack 的“语法错误:无法在模块外使用导入语句”

我对 Babel 7、Webpack 4 和 Jest 的配置有问题。当我运行测试时,我收到以下错误:

语法错误:不能在模块外使用导入语句

包.json

 "@babel/core": "^7.7.5",
    "@babel/highlight": "^7.8.3",
    "@babel/plugin-syntax-dynamic-import": "^7.8.3",
    "@babel/preset-env": "^7.8.4",
    "babel-core": "^7.0.0-bridge.0",
    "babel-loader": "^7.1.5",
    "@babel/plugin-transform-runtime": "^7.7.4",
    "@babel/preset-react": "^7.7.4",
    "@babel/runtime": "^7.8.4",
    "babel-jest": "^24.9.0",
    "jest-watch-typeahead": "^0.4.2",
    "vue-jest": "^3.0.5",
    "jest": "^24.9.0",
    "jest-serializer-vue": "^2.0.2",
    "jest-transform-stub": "^2.0.0",
Run Code Online (Sandbox Code Playgroud)

webpack.config.js

  entry: {
      app: ["./src/index.js"]
  },
  output: {
    path: path.resolve('../', 'static/js/'), 
    filename: "[name].js",
    publicPath: '/static/js/', 
    chunkFilename: '[name].chunk.js' 
  }, 
Run Code Online (Sandbox Code Playgroud)

.babelrc - 我认为问题出在 module: false 但如果我不包含它,webpack 不会分块我的文件。


{
  "presets": [
    ["@babel/preset-env", {"modules": false}, "jest" ]
  ],
  "plugins": [
    "@babel/plugin-syntax-dynamic-import" 
  ],
    "env": {  
      "test": …
Run Code Online (Sandbox Code Playgroud)

webpack jestjs babeljs

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

jestjs ×3

node.js ×2

babeljs ×1

ecmascript-6 ×1

javascript ×1

mocking ×1

webpack ×1