Sails.js:如何实际运行测试

6
我完全不了解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 lift”之前始终运行测试。
4个回答

6
更新-2:在使用这种方式运行单元测试时遇到了一些困难,我决定创建一个模块来加载模型并将它们转换为全局变量,就像 sails 一样,但不会花费太多时间。即使你去掉每个钩子,只留下 orm-loader,但根据机器的性能,它仍然可能需要几秒钟,而且添加模型后速度会变慢,因此我创建了这个名为 waterline-loader 的模块,这样你就可以只加载基本内容(快了大约10倍),这个模块还不稳定,需要测试,但你可以使用它或修改它以适应你的需要,或者帮助我在这里改进 -> https://github.com/Zaggen/waterline-loader
更新-1:我已在文档运行测试部分中添加了有关使用mocha运行测试的信息。

仅仅是为了扩展其他人所说的(特别是Alberto Souza所说的)。

如果你想让mocha按照你的意愿与sails一起工作,你需要两个步骤。首先,如sails.js文档所述,你需要在运行测试之前启动服务器,并且为此,你需要在测试的根路径(test/bootstrap.test.js)下创建一个名为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的答案或直接查看他的github存储库中的此文件。file

4

1
非常感谢。我现在可以使用 npm test 来运行测试了。 - kvbx

1
考虑到他们没有给出特别的指示,并且使用了Mocha,我会期望在您位于test父目录时从命令行运行mocha可以正常工作。

1
Sails使用Mocha作为默认的测试框架。但是Sails并不会自行处理测试执行。因此,您需要使用“mocha”命令手动运行它。
但是有一篇文章介绍了如何将所有Sails内容包含在测试中。 http://sailsjs.org/#/documentation/concepts/Testing

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接