2015-12-23 4 views
1

Эта реализация SpookyJS действительно пугающая. При использовании Gulp для запуска тестов Mocha + SpookyJS я не могу видеть большинство выходных данных консоли. Я следил за шагами Quickstart на github SpookyJS page. Почему я не вижу эти выходные данные консоли?Понимание областей в Spooky JS

describe('test', function() { 
it('test 1', function(done){ 

    try { 
     var Spooky = require('spooky'); 
    } catch (e) { 
     var Spooky = require('../lib/spooky'); 
    } 
    var spooky = new Spooky({ 
      child: { 
       transport: 'http' 
      }, 
      casper: { 
       logLevel: 'debug', 
       verbose: true 
      } 
     }, function (err) { 
      if (err) { 
       e = new Error('Failed to initialize SpookyJS'); 
       e.details = err; 
       throw e; 
      } 

      spooky.start(URL); 
      console.log('Hello 3'); //currently this is not printing anything to the console 
      spooky.then(function() {     
       this.emit('hello', 'Hello, from ' + this.evaluate(function() { 
       return document.title; 
       }));     
      }); 
      spooky.run(); 
      console.log('Hello 1'); //currently this is not printing anything to the console 
     }); 
     spooky.on('hello', function (line) { 
      console.log(line); 
     }); 
     spooky.on('console', function (line) { 
      console.log(line); 
     }); 
     spooky.on('error', function (e, stack) { 
      console.error(e); 

      if (stack) { 
       console.log(stack); 
      } 
     }); 

    console.log('Hello 2'); //this is printing to the console 
    done(); 

    }); 
}); 
+0

Вы уверены, что ваш код достигнет точки регистрации? например выполняется анонимная функция? – Dacaspex

+0

Нет, я не вижу названия документа. В настоящее время единственными консольными выходами являются индикатор хода Mocha и вывод консоли Hello 2. – GracefulCode

ответ

1

Упрощая свой код, это примерно выглядит следующим образом:

describe('test', function() { 
    it('test 1', function(done){ 
     var Spooky = require('spooky'); 
     var spooky = create a spooky object with a lot of logic in it; 

     console.log('Hello 2'); //this is printing to the console 
     done(); 
    }); 
}); 

Объект spooky создан, и после этого, поток программы просто продолжается. Все, что делает объект spooky, выполняется асинхронно, позже.

После создания объекта spooky вы получаете Hello 2, а затем вызывается done(), что и заканчивает этот тест.

Итак, перед любыми hello материал может быть обработан, ваши испытания уже завершены.

Что может помочь, чтобы переместить done() линии здесь:

spooky.on('hello', function (line) { 
    console.log(line); 
    done(); 
}); 

Тогда ваш тест закончится после того, как событие hello было поймано.

Поскольку я не знаком с Spooky или с чем именно вы хотите протестировать, я боюсь, что больше не могу помочь. Надеюсь, это поможет вам сделать еще один шаг вперед.

Смежные вопросы