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

Meteor 仅为使用Jasmine包的测试运行代码,meteor,jasmine,meteor-jasmine,Meteor,Jasmine,Meteor Jasmine,我正在我的应用程序中使用sanjo:jasmine和velocity:html reporter包来尝试并实现一些单元和集成测试。以本教程为指导,我完成了一些单元测试和一些集成测试。我无法弄清楚的是如何让代码在“测试”环境中运行,该环境不是单元测试或集成测试的一部分,但需要在测试之前运行,并且只针对测试 我试图解决的是,我需要一些为测试而创建的虚拟用户,但我不希望他们出现在我的生产应用程序中。有点像“初始化”阶段,您可以在其中构建模型并插入所需的任何数据。有没有办法做到这一点 我建议您使用工厂为

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

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

  • 我建议您使用工厂为测试创建一些种子或伪数据

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

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

    meteor添加防伪dburles:factory

  • 仅为测试环境创建出厂数据

  • 我将创建一个名为
    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');
        });
      }
    });
    
    对于任何数据,而不仅仅是用户,您都可以遵循工厂的方法

    <强>如果您的用户需要登录,例如当您使用<代码>帐户:Base< /C> >时,我会考虑使用工厂数据的另一种方法:

    var email = "test@example.com";
    var password = "secret";
    var name = "Test user";
    
    Accounts.createUser({email: email, password: password, profile: {name: name}});
    

    有关更多详细信息,请参阅Meteor文档。

    我一直在使用mike:mocha,只要您的规范写在名为tests(然后分别写在client/server)的文件夹中,Velocity就会将数据放入Velocity特定的集合中。我使用相同的Meteor方法在我的主应用程序中插入文档,但velocity知道如何将其放入镜像版本

    如果您使用的是
    sanjo:jasmine
    您可以在编写规范之前(在
    descripe
    之后和
    it
    之前)将数据插入镜像数据库,并且该数据将可用于所有规范

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


    您可以找到更多信息。

    完美!效果很好。