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

时间:2014-11-10 05:47:17

标签: javascript node.js unit-testing sails.js mocha

我对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'命令或类似的东西。我也没有找到任何关于如何添加任务的迹象,所以测试总是在“风帆升降”之前运行。

4 个答案:

答案 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