我在我的应用中使用sanjo:jasmine
和velocity:html-reporter
个包来尝试实施一些单元和集成测试。以本教程为指导,我进行了一些单元测试和几个集成测试。我无法弄清楚的是如何让代码在“测试”环境中运行,该环境不是单元测试或集成测试的一部分,但需要在测试之前运行,并且仅用于测试。
我想要解决的是我需要为测试创建一些虚拟用户,但我不希望它们出现在我的生产应用程序中。类似于“初始化”阶段,您可以在其中构建模型并插入所需的任何数据。有没有办法实现这个目标?
答案 0 :(得分:2)
我建议您使用工厂为测试创建一些种子或假数据。
我建议您尝试以下软件包:
您可以使用以下命令安装这些软件包:
meteor add anti:fake 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');
});
}
});
您可以按照工厂方法获取任何数据,而不仅仅是用户。
如果您的用户需要登录,例如当您使用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方法,但是速度知道将它放在镜像版本中。