executeAsync 未将 return 值传递给回调
executeAsync not passing return value to callback
我正在使用实习生 JS/leadfood 测试框架。我正在使用 executeAsync。我希望将 executeAsync 的 return 值传递给 executeAsync 的回调,但这并没有发生。以下应该有效吗?
return this.remote.get(require.toUrl(url));
//do stuff
.executeAsync(function (done) {
require([<library>],
function ([<function>]) {
return <function which returns Promise>
.then(function (value) {
return <function which returns Promise>
...
}).then(function () {
done(window.location);
})
})
})
.then(function (loc) {
console.log(loc);
})
执行成功到 executeAsync 中的最后一个回调。成功调用 executeAsync 的回调。但是传递给 executeAsync 回调的值是 undefined
.
编辑:
我发现即使您设置了一个非常大的 executeAsync 超时值,如果您没有调用 this.async(timeout)
指定正确的超时值(在撰写本文时默认值为 30 秒),该超时值也会被忽略。所以问题是测试花费的时间超过 30 秒,传递给 done 的值没有进入 executeAsync 的回调。
根据此处的 Leadfoot 文档
https://theintern.github.io/leadfoot/module-leadfoot_Command.html#executeAsync
Returns
The value returned by the remote code. Only values that can be serialised to JSON, plus DOM elements, can be returned.
你从执行的函数返回什么?
executeAsync
使用回调来确定其函数何时完成 运行。此回调自动作为最后一个参数(如果您没有传递任何其他参数,则为唯一参数)传递给 executeAsync
函数:
define([
'require',
'intern!object'
], function (
require,
registerSuite
) {
registerSuite({
name: 'test',
foo: function () {
return this.remote.get(require.toUrl('./index.html'))
.setExecuteAsyncTimeout(5000)
.executeAsync(function (done) {
var promise = new Promise(function (resolve) {
setTimeout(function () {
resolve();
}, 1000);
});
promise.then(function () {
return new Promise(function (resolve) {
setTimeout(function () {
resolve();
}, 1000);
});
}).then(function () {
done(window.location);
});
})
.then(function (loc) {
// This prints out a full location object from the
// browser.
console.log(loc);
});
}
});
});
我正在使用实习生 JS/leadfood 测试框架。我正在使用 executeAsync。我希望将 executeAsync 的 return 值传递给 executeAsync 的回调,但这并没有发生。以下应该有效吗?
return this.remote.get(require.toUrl(url));
//do stuff
.executeAsync(function (done) {
require([<library>],
function ([<function>]) {
return <function which returns Promise>
.then(function (value) {
return <function which returns Promise>
...
}).then(function () {
done(window.location);
})
})
})
.then(function (loc) {
console.log(loc);
})
执行成功到 executeAsync 中的最后一个回调。成功调用 executeAsync 的回调。但是传递给 executeAsync 回调的值是 undefined
.
编辑:
我发现即使您设置了一个非常大的 executeAsync 超时值,如果您没有调用 this.async(timeout)
指定正确的超时值(在撰写本文时默认值为 30 秒),该超时值也会被忽略。所以问题是测试花费的时间超过 30 秒,传递给 done 的值没有进入 executeAsync 的回调。
根据此处的 Leadfoot 文档
https://theintern.github.io/leadfoot/module-leadfoot_Command.html#executeAsync
Returns
The value returned by the remote code. Only values that can be serialised to JSON, plus DOM elements, can be returned.
你从执行的函数返回什么?
executeAsync
使用回调来确定其函数何时完成 运行。此回调自动作为最后一个参数(如果您没有传递任何其他参数,则为唯一参数)传递给 executeAsync
函数:
define([
'require',
'intern!object'
], function (
require,
registerSuite
) {
registerSuite({
name: 'test',
foo: function () {
return this.remote.get(require.toUrl('./index.html'))
.setExecuteAsyncTimeout(5000)
.executeAsync(function (done) {
var promise = new Promise(function (resolve) {
setTimeout(function () {
resolve();
}, 1000);
});
promise.then(function () {
return new Promise(function (resolve) {
setTimeout(function () {
resolve();
}, 1000);
});
}).then(function () {
done(window.location);
});
})
.then(function (loc) {
// This prints out a full location object from the
// browser.
console.log(loc);
});
}
});
});