2017-01-30 16 views
0

Я проверил некоторые библиотеки NPM для проверки веб-страниц или веб-сервисов. Но все они ожидают, что сервер уже запущен. Так как я хочу, чтобы автоматизировать функциональное тестирование, как я могу настроить NPM пакет таким образом, чтоАвтоматизация функционального тестирования в node.js

  1. Он может запустить сервер
  2. Test приложение
  3. Остановите сервер

Так что Я могу тестировать его локально, а также в онлайн-инструментах CI, таких как travis-ci или circleci.

Случай 1: Webservice

я написал пакет НПМ, который начинается nodejs HTTP (S) сервера. Его можно запустить из командной строки $stubmatic. В настоящее время я использую 2 подхода к его тестированию,

  1. руководство пользователя: я вручную запускаю его из командной строки. Затем запустите тесты.
  2. Автоматически: я использую модуль exec для запуска команды unix, которая может запустить приложение и запустить команду pkill, чтобы убить приложение. Но для этой автоматизации мое приложение необходимо установить на тестовую машину.

Случай 2: Веб-сайт

У меня есть создать пакет НПМ: fast-xml-parser и создали демонстрационную страницу в репо, так что я могу быть протестирована в браузере. Чтобы протестировать демонстрационную страницу, я в настоящее время запускаю локальный сервер, используя пакет http-server npm вручную. Проверьте приложение.

Что может быть лучшим способом написать автоматизацию функциональных тестов для узлов js-приложений?

Примечание:

  • Я никогда не использовал бегуны задачи, как глотку или ворчание. Поэтому я не уверен, что они могут помочь в этом случае.
  • В случае 1 мое приложение запускает собственный HTTP-сервер узла js. Я не использую какое-либо стороннее приложение, например express.
+0

Я нашел решение для случая 2. ищет для случая 1 в настоящее время. –

ответ

0

Случай 1: Webservice

Задача 1 Как nodejs server.close() не работал. Я скопировал этот фрагмент в каждом тестовом файле, который запускает мой веб-сервис.

try{ 
    server.setup(options); 
    server.start(); 
}catch(err){ 
    console.log(err); 
} 

После завершения всех испытаний сервер останавливается.

** Проблема 2 Я использовал chai-http. Вот полное рабочее решение.

//Need to be placed before importing chai and chai-http 
if (!global.Promise) { 
    global.Promise = require('q'); 
} 

var server = require('.././lib/server'); 
var chai = require('chai') 
    , chaiHttp = require('chai-http'); 

chai.use(chaiHttp); 

try{ 
    server.setup(someoptions); 
    server.start(); 
}catch(err){ 
    console.log(err); 
} 

describe('FT', function() { 

    describe('scenario::', function() { 

    it('responds to POST', function (done) { 
     chai.request("http://localhost:9999") 
      .post('/someurl') 
      .then(res => { 
       expect(res.status).toBe(200); 
       //console.log(res.text); 
       done(); 
      }).catch(err => { 
       console.log(err); 
       done(); 
      }); 
    }); 

}); 

Случай 2: Веб-сайт Это было довольно просто.

  • Я использовал http-server, чтобы запустить сервер, чтобы мои html-файлы могли быть доступны.
  • Я использовал зомби js для тестирования браузера. (Есть много других вариантов, доступных для тестирования браузера)

Вот код

process.env.NODE_ENV = 'test'; 

const Browser = require('zombie'); 
const httpServer = require('http-server'); 

describe("DemoApp", function() { 
    var browser = new Browser({site: 'http://localhost:8080'}); 
    var server = httpServer.createServer(); 
    server.listen(8080); 

    beforeEach(function(done){ 
     browser.visit('/', done); 
    }); 

    describe("Parse XML", function() { 

    it("should parse xml to json", function(done) { 
     browser.pressButton('#submit'); 
     browser.assert.text('#result', 'some result text'); 
     done(); 
    }); 
    }); 

    afterEach(function(){ 
     server.close(); 
    }) 
}); 
0

В этом вопросе упоминается новая контейнерная система Docker для Travis, которая может быть дублирована локально. Это может быть способом: How to run travis-ci locally

+0

Можете ли вы PLZ объяснить больше, как это может помочь написать/запустить FT? –

0

ли вы смотреть на supertest (SuperAgent driven library for testing HTTP servers) и expect (Assertions library) (documented here) с mocha (Test Framework)?

Я использую их, и у меня никогда не было никаких проблем для всех тестов, которые я делаю до сих пор.

Документ в ссылках содержит всю информацию, необходимую для создания теста.