Запуск кода только для тестов с использованием пакета Jasmine

Я использую sanjo:jasmine а также velocity:html-reporter пакеты в моем приложении, чтобы попробовать и реализовать некоторые юнит и интеграционное тестирование. Используя это руководство в качестве руководства, у меня есть несколько модульных тестов и пара интеграционных тестов. Я не могу понять, как заставить код работать в "тестовой" среде, которая не является частью модульного теста или интеграционного теста, но должна выполняться перед тестами и только для тестов.

Я пытаюсь решить, что мне нужны фиктивные пользователи, созданные для тестирования, но я не хочу, чтобы они были в моем рабочем приложении. Вроде как фаза "инициализации", когда вы можете создавать макеты и вставлять любые данные, которые вам нужны. Есть ли способ сделать это?

3 ответа

Решение

Я использую mike:mocha и пока ваши спецификации пишутся в папке с именем tests (и затем клиент / сервер, соответственно), тогда Velocity помещает данные в коллекции, зависящие от скорости. Я использую тот же метод Meteor, который я использую для вставки документа в мое основное приложение, но скорость знает, чтобы поместить его в зеркальную версию.

  1. Я бы порекомендовал вам создать некоторые исходные или фальшивые данные для ваших тестов на фабриках.

    Я бы порекомендовал вам попробовать следующие пакеты:

    • anti: fake - Поддельный генератор текста и данных для Meteor.js
    • dburles: factory - пакет для создания тестовых данных или генерации приборов.
  2. Вы можете установить эти пакеты с помощью этой команды:

    meteor add anti:fake dburles:factory

  3. Создайте заводские данные только для тестовой среды.

Я бы создал файл с именем 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');
    });
  }
});

Вы можете следовать этому подходу Factory для любых данных, а не только для пользователей.

Если ваши пользователи должны войти, например, когда вы используете accounts:base Тогда я бы рассмотрел альтернативный подход к использованию заводских данных:

var email = "test@example.com";
var password = "secret";
var name = "Test user";

Accounts.createUser({email: email, password: password, profile: {name: name}});

Пожалуйста, смотрите Accounts.createUser в документации Meteor для более подробной информации.

Если вы используете sanjo:jasmine Вы можете вставить данные в зеркальную БД, прежде чем писать свои спецификации (после describe и раньше it пункты), и эти данные будут доступны для всех спецификаций.

Также вы можете использовать beforeEach() чтобы предоставить данные для каждой спецификации, а затем вы можете удалить ее, используя afterEach(),

Здесь вы можете найти больше информации.

Другие вопросы по тегам