- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 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/
以下情况: Table th tbody tr td td td tr td
我想做的是从列表中取出一个元素。我想获取链接中的文本,如果它包含正确的文本,则单击该链接。这是 html 代码: I need help Oh hello Lorem i
这感觉像是有史以来问过的最愚蠢的问题,但我在尝试在 DalekJS 测试中检查一个简单的复选框时没有运气。 到目前为止我已经尝试点击它:- .click('#checky') 我尝试过检查:- .ex
我有以下问题: 打开在内部服务器上运行的 web 应用程序时,open() 似乎随机挂起。 (测试服务器)如果我为另一个网站尝试 open() 方法(http://derstandard.at/)
我一直在 DalekJS 中做一个简单的测试,当我尝试 log.message 一个字符串时,它没有在控制台中显示任何内容。测试成功,但是没有消息。 我是否必须执行任何操作才能启用日志记录?或者它应该
DalekJS 能否调用或使用之前的测试(如登录测试)并在该测试完成后继续?我想将我的测试文件编写为单一测试,以便个人只能编辑其中的一小部分。 我想测试一个菜单项是否真的链接到一个页面,但是调用测试来
我希望能够使我的测试尽可能保持干燥,并且在使用 Dalek 进行操作时我做了很多多余的事情。 有没有办法从另一个测试中执行一个测试,更具体地说,让测试从上一个测试停止的地方继续进行? 例如: test
你好,我在我公司的 mac 中使用了很多 dalekjs,但是当我在 ubuntu 中尝试它时,我在运行任何脚本时都遇到了这个错误 ~/Desktop/test $ dalek test.js Run
我想在 dalekjs 的 .execute() 函数中执行一个外部函数。有可能吗? 最佳答案 取决于您对 external 的含义。 如果你想执行客户端 JavaScript 中已经存在的函数,它必
当我尝试在 Firefox 中运行 Dalek 测试时,Firefox 浏览器只打开,但没有运行任何测试。还有其他人遇到这个吗?相同的测试在 Chrome 和 PhantomJS 中运行良好。 我的测
基本的 DalekJS iOs 模拟器测试无法在 OS X Yosemite 10.10.1 上启动。错误是 Port must be greater than 0 and less than 655
我对使用 DalekJS 作为调试我正在处理的库的 UI 和 JS 端的方法很感兴趣。 我有一个 html 页面,它加载了一些 js 文件,如下所示: 然后在我的测试中,我只想确保这些可以从页
我尝试在代理后面运行 Dalekjs 测试脚本,但收到以下错误消息 D:\dalek>dalek .\test\mytest.js运行测试运行浏览器:PhantomJS操作系统:Windows 7 3
有人知道使用 API 迭代和操作与查询匹配的所有元素的简单方法吗? 我最简单的用例是这样的 - 不是真正的代码,但希望你知道我在寻找什么。 test.query('textarea').each(fu
这听起来像是一个愚蠢的问题,但是我究竟应该在哪里设置 firefox 的端口呢?我尝试将代码添加到 dalekjs\lib\dalek\config.js 中的 config.js 文件,但它似乎没有
每次我尝试使用 PhantomJS 运行测试时,Dalek 都会给我这个错误。然而,使用 GoogleChrome 测试运行正常。 Running tests /Users/user/node_mod
我是一名优秀的程序员,十分优秀!