我对sails,node和js一般都是新手,所以我可能会遗漏一些明显的东西。
我使用风帆0.10.5和节点0.10.33。
在sails.js文档中有一个关于测试http://sailsjs.org/#/documentation/concepts/Testing的页面,但它没有告诉我如何实际运行它们。
我根据该文档设置了目录,添加了一个名为test / unit / controllers / RoomController.test.js的测试,现在我想让它运行。
没有'sails test'命令或类似的东西。我也没有找到任何关于如何添加任务的迹象,所以测试总是在“风帆升降”之前运行。
答案 0 :(得分:6)
UPDATE-2:在用这种方式运行单元测试需要多少努力之后,我决定创建一个模块来加载模型并将它们变成全局变量,就像风帆一样,但没有采取这么多。即使你去除每个钩子,但是根据机器的orm-loader,它可以很容易地花费几秒钟而不进行任何测试!并且当你添加模型时它会变慢,所以我创建了这个名为waterline-loader的模块因此你可以只加载基础知识(它快10倍左右),模块不稳定并需要测试,但欢迎你使用它或修改它以满足你的需要,或者帮助我在这里改进它 - > https://github.com/Zaggen/waterline-loader
<强> UPDATE-1:强> 我已将与使用mocha运行测试相关的信息添加到运行测试部分下的docs。
只是为了扩展其他人所说的话(特别是Alberto Souza所说的)。
您需要两个步骤才能让mocha按照您的意愿使用帆。首先,正如sails.js Docs中所述,您需要在运行测试之前解除服务器,并且为此,您可以在根路径中创建一个名为bootstrap.test.js的文件(可以调用任何您喜欢的文件) (可选)你的测试(test / bootstrap.test.js)将首先被mocha调用,然后它会调用你的测试文件。
var Sails = require('sails'),
sails;
before(function(done) {
Sails.lift({
// configuration for testing purposes
}, function(err, server) {
sails = server;
if (err) return done(err);
// here you can load fixtures, etc.
done(err, sails);
});
});
after(function(done) {
// here you can clear fixtures, etc.
sails.lower(done);
});
现在在package.json中,在脚本键上添加此行(忽略注释)
// package.json ....
scripts": {
// Some config
"test": "mocha test/bootstrap.test.js test/**/*.test.js"
},
// More config
这将加载bootstrap.test.js文件,抬起sails服务器,然后运行所有使用“testname.test.js”格式的测试,您可以将其更改为&#39 ; .spec.js&#39;如果你愿意的话。
现在您可以使用npm test
来运行测试。
注意你可以在不修改package.json的情况下做同样的事情,并在命令行中打字mocha test/bootstrap.test.js test/**/*.test.js
PST:有关bootstrap.test.js的更详细配置,请检查Alberto Souza的答案或直接检查hist github repo中的 file
答案 1 :(得分:4)
在we.js中查看我的测试结构:https://github.com/wejs/we-example/tree/master/test
您可以复制并粘贴sails.js应用并删除bootstrap.js中的we.js插件功能
并将你的package.json更改为在npm test中使用set correct mocha命令:https://github.com/wejs/we-example/blob/master/package.json#L10
- 编辑 -
我创建了一个简单的sails.js 0.10.x测试示例,请参阅:https://github.com/albertosouza/sails-test-example
答案 2 :(得分:1)
鉴于他们没有给出特别说明并且他们使用Mocha,我希望您在父级时从命令行运行mocha
test
目录可行。
答案 3 :(得分:1)
Sails使用mocha作为默认测试框架。 但是Sails本身并不处理测试执行。
所以你必须使用mocha
命令手动运行它。
但是有一篇文章如何将所有Sails的东西都包含在测试中。 http://sailsjs.org/#/documentation/concepts/Testing