gpt4 book ai didi

javascript - 如何在 dalekjs .execute( ) 中执行外部函数?

转载 作者:行者123 更新时间:2023-11-29 19:42:50 25 4
gpt4 key购买 nike

我想在 dalekjs 的 .execute() 函数中执行一个外部函数。有可能吗?

最佳答案

取决于您对 external 的含义。

如果你想执行客户端 JavaScript 中已经存在的函数,它必须可以通过全局 window 对象访问。例如:

在我的一个客户端脚本中,我有这样的东西:

function myAwesomeFn (message) {
$('body').append('<p>' + message + '</p>');
}

如果该函数是在全局范围内定义的(而不是在某些 IIFE f.e. 中),您可以像这样在执行函数中触发它:

test.execute(function () {
window.myAwesomeFn('Some message');
});

如果你的意思是“在 Dalek 测试套件中定义的函数”是外部的,我可能会让你失望,因为 Daleks 测试文件和 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 /文件:Dalek DRY Example

关于javascript - 如何在 dalekjs .execute( ) 中执行外部函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21984287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com