четверг, 21 апреля 2016 г.

Создание среды для Unit-тестирования JavaScript с помощью Jasmine и Karma (в IntelliJ IDEA). Пошаговое руководство.


Технические средства


  • Node.js (https://nodejs.org) - программная платформа, основанная на движке браузера Chrome V8; позволяет выполнять JavaScript код
  • Karma (https://karma-runner.github.io) - настраиваемый движок, который позволяет запускать тесты (TestRunner)
  • Jasmine(http://jasmine.github.io/) - js-библиотека для unit-тестирования JavaScript
  • PhantomJS(http://phantomjs.org/)  - полноценный браузер на основе WebKit из консоли
  • IntelliJ IDEA(https://www.jetbrains.com/idea/) - IDE-среда для разработки (к сожалению, до сих пор в компании используется уже сильно устаревшая версия 13)
  • Плагины IntelliJ IDEA для Node.js и Karma - дополнительные модули(plugins) для возможности запуска тестов Karma-Jasmine в IDE

Установка в системе


1. Скачать установочный файл Node.js и установить всё по умолчанию (https://nodejs.org/en/ (Версия 5.x) )

2.  Проверить в Windows PowerShell (Все программы/Стандартные/Windows PowerShell/Windows PowerShell)

Команда: node -v

3. Установить библиотеки karma,jasmine,phantomjs в nodejs npm, для чего выполнить команды из под WindowsShell

    npm install -g karma
    npm install -g jasmine
    npm install -g jasmine-core
    npm install -g karma-cli
    npm install -g karma-jasmine
    npm install -g phantomjs-prebuilt
    npm install -g karma-phantomjs-launcher

Установка в IntellijIDEA(13)

В среде

1.Установить плагин Node.js

2. Установить плагин Karma

В проекте

1. Создать в проекте файл конфигурации запуска тестов для Karma, karma.conf.js  

Удобнее, в корне проекта или папке с тестами, но это не очень важно, т.к. затем надо будет этот путь прописывать в конфигурации запуска тестов на выполнение.

Пример karma.config.js
module.exports = function(config) {
    config.set({
        basePath: '',
       // файлы, в которых находится исходный код, необходимые библиотеки, сами тесты
        files: [
            "./base/js/ext-4.2/ext-all.js",
            "./base/js/FormStik.js",
            "./base/js/isuprTrains.js",
            "./test/js/isuprTrains.Test.js"
        ],
        // указать конкретную библиотеку для тестирования
        frameworks: ['jasmine'],
        // если тестировать в phantomjs, т.е. без явного запуска браузера
        browsers: ["PhantomJS"]
    });
};

2. Создать тестовый класс с использованием jasmine, c именем <имя js файла>.Test.js (имя на самом деле не принципиально - оно настраивается в конфиге karma.config.js)

Пример jasmine- unit-теста
describe("First Test", function() {
    it("makes testing JavaScript awesome!", function() {
        expect(true).toBe(true);
    });
});

3. Создать запускающую конфигурацию в проекте


4.Выполнить конфигурацию (Run)

Результат выглядит приблизительно так:


среда, 13 апреля 2016 г.

Про то, как надо делать API

Попалась отличная статья(перевод) на хабре, о том, как надо делать REST API: Разработка web API (перевод)
Жаль, что я не прочитал её на несколько месяцев раньше, когда я переделывал некоторую функциональность на одном из проектов. Хотя приятно, что до некоторых идей получилось додуматься самостоятельно :)

Из интро выяснилось откуда ноги растут: "Это краткий перевод основных тезисов из брошюры «Web API Design. Crafting Interfaces that Developers Love» Брайана Маллоя из компании Apigee Labs"

В общем, читать и перечитывать, пока в голове не застрянет накрепко :)