针对多节点模块版本进行测试

时间:2015-03-10 20:11:21

标签: node.js npm travis-ci

我正在开发几个扩展Sequelize数据库ORM模块功能的节点模块。在将新版本的模块推送到NPM之前,我正在使用Travis来运行测试。

Travis允许您针对不同版本的节点(v0.10,v0.12等)运行测试。同样,我希望能够使用各种不同版本的Sequelize模块运行我的测试。即使用Sequelize 2.0.0再次运行测试,再次使用2.0.1,2.0.2等。

Travis根据package.json文件中设置的版本自动从NPM加载模块,因此只根据我模块的package.json中指定的内容使用最新的模块版本运行测试(在本例中为^ 2.0) 0.0)。

有没有办法干扰这个过程并让Travis每次使用不同的Sequelize版本多次运行测试?

我在Stack Overflow和其他地方搜索过这方面的建议,但没有运气。但我认为我不可能是唯一一个想要这样做的人...

3 个答案:

答案 0 :(得分:4)

最后我提出的解决方案是将以下内容放在travis.yml文件中:

before_script:
  - 'if [ "$SEQ_VERSION" ]; then npm install sequelize@^$SEQ_VERSION.0.0; fi'

env:
  - SEQ_VERSION=2
  - SEQ_VERSION=3

(感谢Sandro Munda的回答让我走上正轨)

答案 1 :(得分:2)

package.json中,您可能会遇到以下情况:

...
"scripts": {
  "test-sequelize-2.0.0": "npm install sequelize@2.0.0 && ./node_modules/mocha/bin/mocha",
  "test-sequelize-2.1.0": "npm install sequelize@2.1.0 && ./node_modules/mocha/bin/mocha",
  "test": "npm run test-sequelize-2.0.0 && npm run test-sequelize-2.1.0"
}
...

然后,运行npm test

答案 2 :(得分:1)

test-all-versions是一个包,它将为一系列语义版本运行命令(您希望您的测试脚本)。因此,如果您想针对续集运行测试,您可以编写这样的配置文件。

#.tav.yml
name: sequelize
  versions: ^2.0.0
  command: npm run test

这将对所有与^ 2.0.0匹配的sequelize发布版本运行你的npm测试脚本(即2.0.0,2.0.1等)

然后在你的travis配置中运行tav命令来测试给定范围内的所有版本。