我正在开发几个扩展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和其他地方搜索过这方面的建议,但没有运气。但我认为我不可能是唯一一个想要这样做的人...
答案 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
命令来测试给定范围内的所有版本。