2016-09-21 91 views
0

我正在使用npm库jasmine-node对我的javascript代码进行单元测试。据我了解,它使用Jasmine 1.3。在Nodejs中测试promise是否被Jasmine 1.3解决或拒绝

我的大部分代码都涉及异步Promises(使用ES6内置承诺,而不是第三方Promise库)。我读过Jasmine 2有一个名为done()的方法,您可以根据您的承诺从“then”或“catch”调用进行调用。我可以在Jasmine 1.3中做什么?有没有办法模拟这个?或者有没有更好的方法或茉莉花节点的不同分支?

看到这个问题: Test if a promise is resolved or rejected with Jasmine in Nodejs

+0

据我所知,Jasmine 1.x没有很好的异步测试支持。如果可能的话,我会转向Jasmine 2.x.由于多种原因,这种方式更好一些。另一种可能性也不是很好,就是对所有异步代码进行模拟和存根,以便可以在同一个tick中同步执行。看起来1.3确实有异步支持,但有点混乱。 http://jasmine.github.io/1.3/introduction.html#section-Asynchronous_Support –

+0

我很想转移到Jasmine 2,但我喜欢npm模块的便利性,它仍然在1.3。我遇到了一个名为Jasmine.Async的模块,它看起来很有希望,可以调用像Jasmine 2这样的“done()”方法,但我仍在研究。 –

+0

我认为你错了。茉莉花核心NPM模块是你想要的。 https://www.npmjs.com/package/jasmine-core –

回答

1

您应该避免使用茉莉花节点模块。它不再被维护(最近一次提交是在两年前,而PR正在堆积)。相反,你应该使用茉莉花的官方捆绑jasmine-core

说实话,这些软件包的捆绑并不太清楚。你实际上想要安装jasmine包。这为您提供了命令行工具,帮助您配置项目以用于茉莉花并为您提供命令来运行规格。 EG(从文件):

本地安装:

npm install --save-dev jasmine 

要初始化项目茉莉花

./node_modules/.bin/jasmine init 

要使用一些例子种子项目

./node_modules/.bin/jasmine examples 

运行您的测试套件

./node_modules/.bin/jasmine 

您也可以选择安装在全球茉莉这样的:

npm install -g jasmine 

这样,就可以避免前缀每次调用与./node_modules/.bin/。但是,我更喜欢使用本地安装的实例来处理所有项目依赖项。这可以确保您使用项目期望的相同版本的依赖关系。

+0

谢谢。我会试试这个。 –

+0

我必须输入“./node_modules/.bin/jasmine init”,因为你所描述的过程没有修改我的路径,但是否则它工作正常。 –

+0

'npm install -g jasmine'应该在全局安装。但是,如果它是项目依赖项,则最好使用本地安装的版本。我会更新我的答案。 –

相关问题