运行 仅用于使用 Jasmine 包进行测试的代码
Running code only for tests using Jasmine package
我在我的应用程序中使用 sanjo:jasmine
和 velocity:html-reporter
包来尝试实施一些单元和集成测试。使用本教程作为指南,我完成了一些单元测试和几个集成测试。我无法弄清楚的是如何在 "test" 环境中将代码获取到 运行,这不是单元测试或集成测试的一部分,但需要在 运行 之前测试且仅用于测试。
我要解决的问题是我需要为测试创建一些虚拟用户,但我不希望它们出现在我的生产应用程序中。有点像 "init" 阶段,您可以在其中构建模型并插入所需的任何数据。有办法实现吗?
我建议您使用工厂.
为您的测试创建一些种子或假数据
我建议您尝试以下软件包:
- anti:fake - Meteor.js
的假文本和数据生成器
- dburles: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。
我一直在使用 mike:mocha
,只要您的规格写在名为测试(然后分别是客户端/服务器)的文件夹中,Velocity 就会将数据放入特定于速度的集合中。我 运行 我使用相同的 Meteor 方法在我的主应用程序中插入文档,但 velocity 知道将其放入镜像版本。
如果您正在使用 sanjo:jasmine
,您可以在编写规范之前(在 describe
和 it
子句之前)将数据插入镜像数据库,并且此数据可用于所有规格。
此外,您可以使用beforeEach()
为每个规格提供数据,然后您可以使用afterEach()
删除它。
Here您可以找到更多信息。
我在我的应用程序中使用 sanjo:jasmine
和 velocity:html-reporter
包来尝试实施一些单元和集成测试。使用本教程作为指南,我完成了一些单元测试和几个集成测试。我无法弄清楚的是如何在 "test" 环境中将代码获取到 运行,这不是单元测试或集成测试的一部分,但需要在 运行 之前测试且仅用于测试。
我要解决的问题是我需要为测试创建一些虚拟用户,但我不希望它们出现在我的生产应用程序中。有点像 "init" 阶段,您可以在其中构建模型并插入所需的任何数据。有办法实现吗?
我建议您使用工厂.
为您的测试创建一些种子或假数据我建议您尝试以下软件包:
- anti:fake - Meteor.js 的假文本和数据生成器
- dburles: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。
我一直在使用 mike:mocha
,只要您的规格写在名为测试(然后分别是客户端/服务器)的文件夹中,Velocity 就会将数据放入特定于速度的集合中。我 运行 我使用相同的 Meteor 方法在我的主应用程序中插入文档,但 velocity 知道将其放入镜像版本。
如果您正在使用 sanjo:jasmine
,您可以在编写规范之前(在 describe
和 it
子句之前)将数据插入镜像数据库,并且此数据可用于所有规格。
此外,您可以使用beforeEach()
为每个规格提供数据,然后您可以使用afterEach()
删除它。
Here您可以找到更多信息。