我在我的应用程序中使用sanjo:jasmine
andvelocity:html-reporter
包来尝试实现一些单元和集成测试。以本教程为指导,我完成了一些单元测试和一些集成测试。我无法弄清楚的是如何让代码在不属于单元测试或集成测试的“测试”环境中运行,但需要在测试之前运行并且仅用于测试。
我要解决的是我需要为测试创建一些虚拟用户,但我不希望它们出现在我的生产应用程序中。有点像“初始化”阶段,您可以在其中构建模型并插入所需的任何数据。有没有办法做到这一点?
我在我的应用程序中使用sanjo:jasmine
andvelocity:html-reporter
包来尝试实现一些单元和集成测试。以本教程为指导,我完成了一些单元测试和一些集成测试。我无法弄清楚的是如何让代码在不属于单元测试或集成测试的“测试”环境中运行,但需要在测试之前运行并且仅用于测试。
我要解决的是我需要为测试创建一些虚拟用户,但我不希望它们出现在我的生产应用程序中。有点像“初始化”阶段,您可以在其中构建模型并插入所需的任何数据。有没有办法做到这一点?
我建议您使用 factory 为您的测试创建一些种子或虚假数据。
我建议您尝试以下软件包:
您可以使用以下命令安装这些软件包:
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 。
如果您正在使用,您可以在编写规范(之后和之前的子句)sanjo:jasmine
之前将数据插入镜像数据库,并且此数据可用于所有规范。describe
it
此外,您可以使用beforeEach()
为每个规格提供数据,然后您可以使用 删除它afterEach()
。
在这里您可以找到更多信息。
我一直在使用mike:mocha
,只要您的规范写在一个名为测试的文件夹中(然后分别是客户端/服务器),那么 Velocity 就会将数据放入特定于速度的集合中。我运行与在主应用程序中插入文档相同的 Meteor 方法,但velocity 知道将其放入镜像版本中。