当前位置: 首页 > 面试题库 >

摩卡咖啡需要做。找不到适用于Windows的make.exe

鲜于海
2023-03-14
问题内容

Mocha(Node.js的测试框架)使用make。

为了我的生命,我找不到适用于Windows的兼容make.exe。

在Mac上,一切正常。

我试过使用VS的nmake.exe和我发现从Unix移植的make.exe。但是它们都是不兼容的。

不能只是我

这是makefile:

test:
    @./node_modules/.bin/mocha -u tdd -R spec

.PHONY: test

在锅上做面包。在PHONY中,即使我将其删除,它也永远不会运行mocha命令(或者至少没有输出)。

./node_modules/.bin/mocha -u -tdd -R spec直接运行会给我我的测试报告:

first suite -
  ? ten should always be equal to 9+1
  ? zero is less all positive numbers
  ? There is no i in team

 ? 3 tests complete (8ms)

编辑3/25/12

  • 最后,解决此问题的最简单方法是使用Cygwin,并确保已安装Cygwin的开发人员软件包。在PowerShell中,我做了Set-Alias make "c:\dev\utils\cygwin\bin\make.exe",现在make test可以在标准Mocha Makefile中使用。

问题答案:

嘿,我觉得你;)我是一个团队的成员,忙于使用node建立一个新的创业公司。我们的两个开发人员在OSX上,一个在Linux上。我在Windows上。

我下载并使用了GNU的“
Windows版”
,现在可以很高兴地制作我们的安装和测试套件。

另外,我强烈建议您使用PowerShell-它有一堆别名为UNIX友好命令的命令(例如Get-ChildItem->
ls)。这使我们的一些脚本无需更改即可在UNIX或Windows上运行。

因此,对于您的问题:

尝试使用以下命令替换上面的makefile:

# Detect if we're running Windows
ifdef SystemRoot
    # If so, set the file & folder deletion commands:
    FixPath = $(subst /,\,$1)
else
    # Otherwise, assume we're running *N*X:
    FixPath = $1
endif

NODE_MODULES := ./node_modules/.bin/

test: 
    $(call FixPath, NODE_MODULES)mocha -u tdd -R spec

.PHONY: test

注意:对于Makefile,目标中的任务必须使用制表符而不是空格缩进!去搞清楚!!

我从这篇文章中偷走了FixPath例程(感谢Paul
:))。如果在Windows上运行,它将用\替换字符串的/。

在Windows上,make的问题之一是它为了执行每个任务而被外壳化到NT的命令外壳(通过CreateProcess)。这意味着在执行makefile文件时,Powershell否则会处理的所有
N个 X-ism(例如ls,cat等)将不起作用。因此,建议用可覆盖的别名替换内联命令,对于NT,您可以将其设置为一个命令,对于 N X
,可以将其设置为另一个命令。

也许我会分叉Gnu Make,看看在执行命令而不是NT命令行时是否可以将它封装到Powershell中。这也将消除对上面的FixPaths的需要;)

如果遇到问题,请ping我;)



 类似资料:
  • 问题内容: 我希望能够同时启动我在Mocha中的所有describe语句。有人可以帮我弄清楚该怎么做吗? 问题答案: 您无法直接使用mocha进行此操作,因为它会创建it()回调的列表并按顺序调用它们。 如果您愿意将自己的描述移到单独的.js文件中,mocha- parallel-tests 可以执行此操作。为了说服自己,请将其安装在某个地方,然后用–low缓慢调用它,以便每次都报告: 您将看到它

  • 我有一个叫MochaTests的目录。在这里,我有一个在摩卡网站“1.2.3摩卡”上找到的示例测试。在命令提示符下(我的操作系统是WIN7),我输入Mocha,结果是。我按照说明进行了安装:,我可以告诉它安装得很好 所以,在

  • 问题内容: 我正在尝试使用Mocha来测试构造函数是否引发错误。我无法使用Expect语法执行此操作,因此我想执行以下操作: 这可能吗? 问题答案: 您可以尝试使用Chai的 构造。例如:

  • 问题内容: 尝试使用TowerJS作为测试设置基本站点,但是在运行脚手架生成器时遇到此错误。 问题答案: 更新您的package.json文件 在“ devDependencies”上并再次更新npm 为我解决了同样的问题

  • 问题内容: 以下测试的行为异常: 我应该如何正确处理被拒绝的承诺(并进行测试)? 我应该如何正确处理失败的测试(即:? 这是我正在测试的实现: 问题答案: 最简单的方法是使用Mocha在最新版本中提供的内置Promise支持: 或者使用现代Node和async / await: 因为这种方法是端到端的承诺,所以它更易于测试,您不必考虑正在考虑的奇怪情况,就像到处都是奇怪的电话一样。 这是Mocha

  • 问题内容: 我正在尝试测试Express.js控制器,但是每隔一段时间我就会碰到mocha超时提示我的问题。 文档(https://mochajs.org/#working-with-promises) 我用Promises包装了Express控制器,以便随后可以在测试中将它们返回。 我有一个基本测试,可以运行以始终得到错误消息: 我得到的错误是: 我不明白为什么会出现错误,因为我正在返回确实解决