当前位置: 首页 > 知识库问答 >
问题:

Mocha TS测试以“npm测试”失败,但如果直接运行则不会失败

公孙志尚
2023-03-14

在我的nodejs项目(用Typescript编写)中,我可以用以下命令运行我的测试:

mocha --compilers ts:ts-node/register,tsx:ts-node/register

他们成功了。我还在我的 package.json 文件中使用此命令,以便

npm test

以相同的方式运行它们,但在本例中,我得到:

Mikes-iMac:antlr4-graps mike$ npm test

> mocha --compilers ts:ts-node/register,tsx:ts-node/register

module.js:472
    throw err;
    ^

Error: Cannot find module 'ts-node/register'
    at Function.Module._resolveFilename (module.js:470:15)

这是我的包裹。json文件包含:

  "scripts": {
    "test": "mocha --compilers ts:ts-node/register,tsx:ts-node/register"
  },

  "devDependencies": {
    "@types/chai": "^3.4.34",
    "@types/mocha": "^2.2.32",
    "@types/node": "^6.0.40",
    "chai": "^3.5.0",
    "mocha": "^2.5.3",
    "typescript": "^2.0.3",
    "vscode": "^1.0.0"
  },

通过npm运行摩卡的正确变体是什么?

共有1个答案

黄和怡
2023-03-14

问题是不管怎样,但是<代码> npm运行

因为您的依赖项中没有< code>ts-node,所以我假设它是全局安装的。根据您安装Node.js的方式,< code>/bin/sh最终可能会使用与当前shell不同的Node.js安装,因此不会有相同的全局安装包。

如果我是对的,这两个命令将给出不同的结果:

$ which node
$ /bin/sh -c 'which node'

两种可能的解决方案:

    < li >将< code>ts-node添加到项目的< code>devDependencies和< code>npm install中。 < li >确保< code>/bin/sh使用与当前shell相同的Node.js安装。
 类似资料:
  • 我按照cypress在他们的文档中推荐的方式编写测试,即每个测试有多个断言,但是用这种方式编写测试时会出现一个问题,那就是如果断言失败,测试执行就会停止。 我希望每个测试有多个断言,如果其中一个失败,测试将失败,但将继续测试执行,所以在最后,我将能够看到测试中失败的所有断言,而不仅仅是第一个失败的断言。 提前感谢!

  • 我们已经为spark编写了单元测试,在本地模式下有4个线程。 当一个接一个地启动时,例如通过intellij或sbt testOnly,每个测试都运行良好。 当用sbt测试启动时,它们会出现如下错误 我们使用的是一个带有多个子项目的sbt项目,其定义如下:

  • 安装程序:我有一个扩展IRetryAnalyzer的类,并实现了一个简单的重试逻辑,覆盖了以下方法:public boolean retry(ITestResult result){ 提前道谢。

  • 我的maven项目有一些问题。我在我的maven文件夹src/test/java中创建了一些JUnit测试。 如果我在命令行或Eclipse IDE中使用“mvn清理安装”创建了我的maven项目,并使用“清理”和“安装”等运行配置,所有测试都将正常运行,不会发生一些错误。 但是,如果我手动运行 JUnit 测试,其中一个 Junit 测试将失败。但是什么原因,为什么maven没有意识到这个事实呢