Автотесты на Mocha.js

Mocha.js (читается как «мока») — это популярная библиотека для написания тестов backenda web приложений.

Установка

У вас стоит Node.js
Выполните в консоле

npm init
npm install supertest
npm install should
npm install mocha -g
  • supertest — для выполнения и тестирования запросов по http
  • should — набор assert`тов для проверки различных результатов запроса к серверу
  • mocha — сама библиотека тестирования. Явно ее можно не устанавливается т.к. она ставится с тем же should
  • Примеры брать от сюда

Что будем тестировать

Для примера написал простенький сервер на Node.js отдающий в ответ данные которые ему поступили.
Запускаем его

node serverTest # или supervisor serverTest

Простой пример

Теперь выполним простейший тест проверяющий доступен ли вообще сервер

var supertest = require("supertest");
var server = supertest.agent("http://localhost:8080"); // Указали сервер к которому идет запрос

// наборов тестов и его описание
describe("Описание теста", function() {
    // Пошел сам тест. done - функция которая вызывается при успешном выполнение теста (тут неявно)
    it("Test #1", function(done) {
        server.get('/')
            .set('Accept', 'application/json')
            .expect(200, done)
    });
});

expect — проверяет код ответа сервера. Если кот отличается то экспешена не будет, но метод end (который обрабатывает окончание запроса) будет содержать ошибку

Запускаем

mocha testSimple

Получаем

Усложняем

var supertest = require("supertest");
var should = require("should");
var assert = require("assert");

var server = supertest.agent("http://localhost:8080");

describe("Проверка тестового сервера", function() {
    this.timeout(15000); // максимальный таймаут ответа сервера

    it("Test #1", function(done) {
        server
            .get('/test1')
            .expect(200)
            .end(function(err, res) {
                /**
                 * Проверка как выполнился запрос. 
                 * Например реакция на неверный код ответа
                 */

                if (err) {
                    assert(false, err.message);
                    return;
                }

                done();
            });
    });

    it("Test #2", function(done) {
        var values = { "val1": 123 };
        server
            .post('/test2')
            .send(values) // Передача параметров
            .set('Accept', 'application/json')
            .expect(200)
            .end(function(err, res) {
                // Проверка тела ответа
                res.body.should.be.instanceof(Object); // тип тела
                res.body.method.should.equal("POST"); // значение поля method
                done();
            });
    });
});
  • Test #1 — просто проверяет как выполнился запрос. Если мы поставим например expect(300) то выдаст ошибку
  • Test #2 — выполняет POST запрос и проверяет пришедший ответ. Для проверки используется библиотека should.

Примеры утверждений задаваемых через should. Если утверждение не подтверждается то происходит исключение.

  • test.should.be.instanceof(Object) — test является объектом
  • test.should.be.instanceof(String) — test является строкой
  • test.should.be.instanceof(Number) — test является цифрой
  • test.should.have.property(«test1») — у test есть свойство с именем «test1»
  • test.should.have.property(«test1», «value») — у test есть свойство с именем «test1» и оно равно «value»
  • test.should.be.ok() — test имеет положительное значение (например не null)
  • test.should.not.be.ok() — test имеет отрицательное значение (например равен null)
  • test.should.equal(«test1») — test равен «test1»
  • test.should.not.equal(«test1») — test НЕ равен «test1»

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *