仅为使用Jasmine包的测试运行代码

时间:2015-01-18 13:16:05

标签: meteor jasmine meteor-jasmine

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

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

3 个答案:

答案 0 :(得分:2)

  1. 我建议您使用工厂为测试创建一些种子或假数据

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

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

    meteor add anti:fake dburles:factory

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

  4. 我创建了一个名为 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

答案 1 :(得分:1)

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

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

Here您可以找到更多信息。

答案 2 :(得分:0)

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