【问题标题】:Loading fixtures in sails tests在风帆测试中加载夹具
【发布时间】:2015-06-04 06:03:28
【问题描述】:

docs 就这么说

// here you can load fixtures, etc.

我已经确定我可以包含

var fixtures = require('./fixtures/models.js');

在引导脚本中,所以完整的引导脚本是:

/*
 * Lifts Sails before testing comenses.
 */

var Sails = require('sails');
var sails;

before(function(done) {
  this.timeout(5000);

  Sails.lift({
    // configuration for testing purposes
    environment: 'test',
  }, function(err, server) {
    sails = server;
    if (err) {
      return done(err);
    }

    // here you can load fixtures, etc.
    var fixtures = require('./fixtures/models.js');
    done(err, sails);
  });
});

after(function(done) {
  // here you can clear fixtures, etc.
  Sails.lower(done);
});

然后我可以在启动脚本中引用fixtures var,但我不能在测试中引用它。我只是不确定。

【问题讨论】:

  • 你需要在每个测试文件上都需要fixtures文件。
  • @LuisElizondo 这是否意味着文档中的评论是错误的?还是我想念它。
  • 你可以在那里加载fixture,但是你需要将它们分配给sails对象,或者你可以在每个测试文件中只需要该文件。

标签: node.js testing sails.js


【解决方案1】:

我使用Barrels

该软件包有助于将固定装置从文件加载到数据库中(无论您选择什么数据库) 您可以选择它们的加载顺序(关联填充)

要加载测试中的夹具,我在测试文件的顶部添加:

var Barrels = require('barrels');
var barrels = new Barrels(process.cwd()+'/tests/fixtures');
var fixtures = barrels.data;

在测试本身之后,我更喜欢在测试之前将数据库表重置为固定装置......就像这样:

before(function (done) {
      barrels.populate(['users', 'categories', 'products'], function (err) {
        if (err) return done(err);

        done();
      });
});

就是这样。您已经填充了数据库。 此过程会触发所有模型上的所有“创建”事件,因此您也可以对其进行测试。

您可以使用包含 mongodb ids 支持的那个包的我的版本: https://github.com/stuk88/barrels

以下是有关如何在风帆中进行测试的完整指南: https://github.com/bredikhin/sailsjs-mocha-testing-barrels-fixtures-example

【讨论】:

    猜你喜欢
    • 2018-02-07
    • 2011-01-12
    • 1970-01-01
    • 2016-09-09
    • 2012-07-21
    • 2021-07-24
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多