我对 sails、node 和 js 完全陌生,所以我可能遗漏了一些明显的东西。
我正在使用 sails 0.10.5 和 Node 0.10.33。
在 sails.js 文档中有一个关于测试的页面 http://sailsjs.org/#/documentation/concepts/Testing ,但它没有告诉我如何实际运行它们。
我已经根据该文档设置了目录,添加了一个名为 test/unit/controllers/RoomController.test.js 的测试,现在我想让它运行。
没有“sails test”命令或类似的命令。我也没有找到任何关于如何添加任务的迹象,因此测试总是在“升 sails ”之前运行。
最佳答案
UPDATE-2: 在为以这种方式运行单元测试需要多少时间而苦苦挣扎之后,我决定创建一个模块来加载模型并将它们变成全局变量,就像 sails 一样,但没有服用那么多。即使你去掉每个钩子(Hook),但是 orm-loader 取决于机器,它可以很容易地花费几秒钟而不进行任何测试!,并且当你添加模型时它会变慢,所以我创建了这个名为 waterline-loader 的模块所以你可以加载只是基础(大约快 10 倍),模块不稳定,需要测试,但欢迎您使用它或修改它以满足您的需要,或者在这里帮助我改进它 -> https://github.com/Zaggen/waterline-loader
更新 1: 我已将与使用 mocha 运行测试相关的信息添加到 运行测试 部分下的 docs。
只是为了扩展其他人所说的(特别是 Alberto Souza 所说的)。
您需要两个步骤才能使 mocha 随心所欲地与 sails 一起工作。首先,如 sails.js Docs 中所述,您需要在运行测试之前提升服务器,为此,您在您的测试 (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 中,在 scripts 键上,添加这一行(忽略评论)
// package.json ....
scripts": {
// Some config
"test": "mocha test/bootstrap.test.js test/**/*.test.js"
},
// More config
这将加载 bootstrap.test.js 文件,启动您的 sails 服务器,然后运行所有使用格式“testname.test.js”的测试,如果您愿意,可以将其更改为“.spec.js”更喜欢。
现在您可以使用 npm test
来运行您的测试。
请注意,您可以在不修改 package.json 并在命令行中键入 mocha test/bootstrap.test.js test/**/*.test.js
的情况下执行相同的操作
PST:有关 bootstrap.test.js 的更详细配置,请查看 Alberto Souza 的回答或直接查看 hist github 存储库中的 file
关于javascript - Sails.js:如何实际运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26837522/