了解 Spooky JS 中的作用域
Understanding Scopes in Spooky JS
SpookyJS 的这个实现真的很恐怖。在使用 Gulp 到 运行 Mocha + SpookyJS 测试时,我无法看到大多数控制台日志输出。我一直在关注 SpookyJS github page 上的快速入门步骤。为什么我看不到这些控制台日志输出?
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();
});
});
简化您的代码,大致如下所示:
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
或您想要测试的内容,恐怕我无法提供更多帮助。希望这能让你更进一步。
SpookyJS 的这个实现真的很恐怖。在使用 Gulp 到 运行 Mocha + SpookyJS 测试时,我无法看到大多数控制台日志输出。我一直在关注 SpookyJS github page 上的快速入门步骤。为什么我看不到这些控制台日志输出?
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();
});
});
简化您的代码,大致如下所示:
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
或您想要测试的内容,恐怕我无法提供更多帮助。希望这能让你更进一步。