我想在dalekjs的.execute()函数中执行一个外部函数。有可能这样做吗?
发布于 2014-03-06 11:44:22
取决于external的含义。
如果要执行客户端JavaScript中已经存在的函数,则必须通过全局window对象访问该函数。例如:
在我的客户端脚本中,我有这样的内容:
function myAwesomeFn (message) {
$('body').append('<p>' + message + '</p>');
}如果该函数是在全局作用域中定义的(而不是在某些IefF.E.中),则可以在执行函数中触发它,如下所示:
test.execute(function () {
window.myAwesomeFn('Some message');
});如果您的意思是使用外部“在Dalek测试套件中定义的函数”,我可能会让您失望,因为Dalek测试文件和execute函数的内容是在不同的上下文(甚至不同的JavaScript引擎)中调用的。
因此,这是行不通的:
'My test': function (test) {
var myFn = function () { // does something };
test.execute(function () {
myFn(); // Does not work, 'myFn' is defined in the Node env, this functions runs in the browser env
})
}什么是有效的:
'My test': function (test) {
test.execute(function () {
var myFn = function () { // does something };
myFn(); // Does work, myFn is defined in the correct scope
})
}希望回答你的问题,如果没有,请提供更多的细节。
编辑:
使用节点自己的要求加载文件
var helper = require('./helper');
module.exports = {
'My test': function (test) {
test.execute(helper.magicFn)
}
};在您的helper.js中,您可以做任何您想做的事情,这将是有意义的(或多或少):
module.exports = {
magicFn: function () {
alert('I am a magic function, defined in node, executed in the browser!');
}
};有关如何保持测试代码干燥的进一步策略,请查看此repo/file:Dalek干例
https://stackoverflow.com/questions/21984287
复制相似问题