Запустить мокко из фантомов

Я хотел бы выполнить BDD, используя только Mocha и PhantomJS.
Определите несколько функциональных путей и протестируйте их.

Короче говоря, я хотел бы запустить команду phantomjs test.js, пока test.js содержит что-то вроде этого:

var mocha = require("mocha"); // This one fails with "ReferenceError: Can't find variable: process"..... "/node_modules/mocha/index.js:2"

var page = require('webpage').create();

describe('Empty', function(){ // Obviously this one fails too with "ReferenceError: Can't find variable: describe"
  describe('tests are', function(){
    it('very nice', function(done){
      page.open("http://www.phantomjs.org/", function (status) {
          console.log('Loading a web page');
          console.log("Page is loaded");
          phantom.exit(); // Or, just call `done()`, doesn't matter right now
      });
    })
  })
})

Можете ли вы распознать фрагменты кода этих двух?

Как я могу заставить это работать? На какой-то странице я читал, что могу require() "mocha.js" браузерной версии, но, похоже, это работает не очень хорошо.

------------------Подробнее ------------------------------ ------

Я пробовал CasperJS, но, помимо действительно хороших вещей, мне не хватает привлекательного тестового дизайна Mocha (на стороне сервера).

Все примеры, которые я видел, объясняют, как запускать тесты Mocha на веб-странице (на стороне браузера) (с тегом сценария), а не на тестовом сценарии NodeJS.
Мне это не нравится, я хочу оставьте тест чистой консоли, в дополнение к тому факту, что этот подход побуждает меня добавлять тестовый код на мои веб-страницы.

Я видел несколько проектов, пытающихся упростить этот подход, но я им не доволен — кажется, что они выполнили 95% требований, внедрив Mocha и PhantomJS, но последние 5% все еще не выполнены. которые действительно соединяют это вместе.


person Poni    schedule 09.12.2013    source источник
comment
Нашел этот замечательный проект ( github.com/alexscheelmeyer/node-phantom ), но непонятно, как Там все делается.. Мне нравится идея удаленного управления PhantomJS.. Не уверен, что мне следует его использовать, так как это небольшой проект с ограниченной (будущей) поддержкой..   -  person Poni    schedule 10.12.2013
comment
Следует отметить, что PhantomJS — это безголовый веб-браузер (среда выполнения V8), а Mocha предназначен для работы в среде выполнения Node. Требовать Mocha не удается, потому что process — это то, что Node предоставляет для скриптов (недоступно в браузерах).   -  person Michael Tang    schedule 10.12.2013


Ответы (2)


Вы можете по-прежнему запускать тесты в контексте Node (node test.js), но управлять phantomJS из узла с помощью чего-то вроде node- фантомная библиотека.

TJ Holowaychuk делает во всех своих библиотеках process.env.COVcheck (который Я лично не понимаю), но вполне вероятно, что PhantomJS не будет поддерживать переменную процесса.

Возможно, вы сможете обмануть Mocha, установив window.process и window.process.env на пустые объекты, хотя я предполагаю, что позже вы столкнетесь с другими проблемами PhantomJS/Node.

person Michael Tang    schedule 10.12.2013
comment
process.env.COV просто использует переменную среды для переключения между кодом и инструментированным кодом для кода COVerage (вероятно, используя свой собственный инструмент jscoverage). - person iandotkelly; 10.12.2013
comment
Кажется, эта фантомная библиотека - это то, что я ищу, я проверю ее, как только смогу скомпилировать: ~ (Windows).. Вернусь с ответами! Спасибо - person Poni; 10.12.2013
comment
Хорошо, теперь кажется, что есть два варианта, которые работают: phantom и node-phantom.. Это точные имена NPM, для будущих ссылок для других. Спасибо, Майкл! :) - person Poni; 10.12.2013

Запуск phantomjs через мост с узла может быть не лучшим вариантом.

Существует модуль phantomjs-nodeify (я развил его из http://github.com/jgonera), что делает среду phantomjs более похожей на среду node - он добавляет процессы модулей, события и т. д. в phantomjs.

Существует фреймворк webspecter, который достиг именно этого, хотя и со старыми фантомами и старым мокко.

Кажется возможным запустить тесты мокко в фантоме 2.0.

person esp    schedule 03.05.2015