简单使用时,Sinon 找不到模块 '@sinonjs/referee-sinon'

ror*_*cky 6 sinon

我是SinonJs的初学者,当我尝试编写一些演示代码时,它无法工作,我不知道为什么。

app.js const db = require('./db');

    module.exports.signUpUser = (user) => {
        db.saveUser(user.email, user.password);
    }
Run Code Online (Sandbox Code Playgroud)

app.test.js

    const sinon = require('sinon');
    // without any other codes, it will throw Error: Cannot find module '@sinonjs/referee-sinon'
Run Code Online (Sandbox Code Playgroud)

我使用 mocha 来运行测试。

包.json

{
  "name": "sinon-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "mocha **/*.test.js"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "mocha": "^5.2.0",
    "sinon": "^7.2.3"
  }
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*Mat 7

我需要查看整个目录结构,但这可能是因为 "scripts": { "test": "mocha **/*.test.js" }

正在“./node_modules/@sinonjs/”中获取意外的测试文件。

更改测试脚本,以便仅包含源目录中的测试。例如

"test": "mocha './src/**/*.test.js'"

或者

"test": "mocha './{,!(node_modules)/**}/*.test.js'"


Tod*_*Tod 1

摩卡很可能找不到您的测试文件。如果不知道您的文件夹结构,就很难判断。但是,您应该始终在 npm 脚本中引用您的 glob。不过,不确定这是否能解决您的问题。我认为这取决于您的 *.test.js 文件所在的位置。尝试简化而不是使用 glob 来启动。只需指定文件夹即可。例如,如果您的测试文件位于 src 目录中,请使用

"test": "mocha './src/*.test.js'"
Run Code Online (Sandbox Code Playgroud)

如果您要在下面有子目录,src可以使用

"test": "mocha './src/**/*.test.js'"
Run Code Online (Sandbox Code Playgroud)

如果您不想使用单引号,可以像这样转义引号

"test": "mocha \"./src/**/*.test.js\""
Run Code Online (Sandbox Code Playgroud)

最后,当我在项目根目录和子文件夹中有测试文件时,我只需指定两者,如下所示:

"test": "mocha  *.test.js './src/**/*.test.js'"
Run Code Online (Sandbox Code Playgroud)

最终,我喜欢在严格模式下运行所有​​测试,因此我的测试命令如下所示:

"test": "mocha --use_strict  *.test.js './src/**/*.test.js'"
Run Code Online (Sandbox Code Playgroud)