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

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

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


person CodeChimp    schedule 18.01.2015    source источник


Ответы (3)


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

person azium    schedule 18.01.2015
comment
Идеальный! Работает отлично. - person CodeChimp; 19.01.2015

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

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

    • anti:fake - Fake text and data generator for 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: "[email protected]"
      // 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, я бы рассмотрел альтернативный подход к использованию данных Factory:

var email = "[email protected]";
var password = "secret";
var name = "Test user";

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

Подробнее см. Accounts.createUser в документации Meteor.

person Chip Castle    schedule 18.01.2015

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

Кроме того, вы можете использовать beforeEach() для предоставления данных для каждой спецификации, а затем удалить их с помощью afterEach().

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

person Joaquín L. Robles    schedule 08.10.2015