1

我在我的应用程序中使用sanjo:jasmineandvelocity:html-reporter包来尝试实现一些单元和集成测试。以本教程为指导,我完成了一些单元测试和一些集成测试。我无法弄清楚的是如何让代码在不属于单元测试或集成测试的“测试”环境中运行,但需要在测试之前运行并且仅用于测试。

我要解决的是我需要为测试创建一些虚拟用户,但我不希望它们出现在我的生产应用程序中。有点像“初始化”阶段,您可以在其中构建模型并插入所需的任何数据。有没有办法做到这一点?

4

3 回答 3

2
  1. 我建议您使用 factory 为您的测试创建一些种子或虚假数据

    我建议您尝试以下软件包:

    • anti:fake - Meteor.js 的假文本和数据生成器
    • dburles:factory - 用于创建测试数据或生成夹具的包。
  2. 您可以使用以下命令安装这些软件包:

    meteor add anti:fake dburles:factory

  3. 仅为测试环境创建工厂数据

我会创建一个名为server/seeds.js以下内​​容的文件:

Meteor.startup(function() {

  Factory.define('user', Users, {
      username: "test-user",
      name: "Test user",
      email: "test@example.com"
      // add any other fields you need
  });

  var numberOfUsers = 10;

  // Ensure this is the test environment
  if (process.env.NODE_ENV === 'test') {

    // Create the users from the factory definition
    _(numberOfUsers).times(function(n) {
      Factory.create('user');
    });
  }
});

您可以对任何数据采用这种工厂方法,而不仅仅是用户。

如果您的用户需要登录,例如当您使用时accounts:base,那么我会考虑使用工厂数据的另一种方法:

var email = "test@example.com";
var password = "secret";
var name = "Test user";

Accounts.createUser({email: email, password: password, profile: {name: name}});

有关详细信息,请参阅Meteor 文档中的Accounts.createUser 。

于 2015-01-18T18:20:36.363 回答
1

如果您正在使用,您可以在编写规范(之后和之前的子句)sanjo:jasmine之前将数据插入镜像数据库,并且此数据可用于所有规范。describeit

此外,您可以使用beforeEach()为每个规格提供数据,然后您可以使用 删除它afterEach()

在这里您可以找到更多信息。

于 2015-10-08T14:16:38.123 回答
0

我一直在使用mike:mocha,只要您的规范写在一个名为测试的文件夹中(然后分别是客户端/服务器),那么 Velocity 就会将数据放入特定于速度的集合中。我运行与在主应用程序中插入文档相同的 Meteor 方法,但velocity 知道将其放入镜像版本中。

于 2015-01-18T18:35:14.263 回答