使用sh测试用户脚本
Testing a user script with sh
我有一个用户脚本(希望是跨浏览器兼容的,尽管目前我正在Tampermonkey上运行它),我正在尝试设置一个测试套件。或者更确切地说,试着看看我在创建测试套件时采取的方法是否合理,以及我是否应该/可以采取不同的做法。
用户脚本非常简单:定义一堆函数,然后调用其中一个函数来完成它的工作。为了在<a href="https://nodejs.org/">node</a>
中检查它,我想定义函数,但避免运行初始函数(因为没有浏览器来处理DOM属性)。所以我运行了这个丑陋的shell脚本(希望相当兼容;我在dash
上运行它):
#!/bin/dash
grep -ev '^'s*stuff's*'('s*')'s*;?'s*($|//)' oeis-tools.user.js > test-cat.js
./getFunctions.sh >> test-cat.js
cat test.js >> test-cat.js
nodejs test-cat.js
rm test-cat.js
所以,基本上,我去掉了调用函数的那一行,用测试脚本cat
它,然后将它传递给节点。在测试脚本中,我有一个类似断言的函数
function shouldBe(func, args, desiredResults) {
totalTests++;
tested.push(func.name);
var actualResult = func.apply(null, args);
if (isIn(actualResult, desiredResults)) return;
console.log('Called ' + func.name + '(' + args.map(disp).join(', ') + ')');
if (desiredResults.length === 1) {
console.log(''tExpected ' + disp(desiredResults[0]));
} else {
console.log(''tExpected ' + desiredResults.map(disp).join(' or '));
}
console.log(''tGot ' + disp(actualResult));
failedTests++;
}
这使我可以调用形式为CCD_ 4的测试。(我省略了各种辅助函数的定义,但它们的精确定义在这里应该无关紧要。)
好的一面是,这让我可以快速编写测试,并且不影响用户脚本(没有测试负担)。但这似乎很古怪。有更好的方法吗?
编辑:(将测试函数放在单独文件中的建议的答案更改)
由于DOM的存在是stuff()
函数的先决条件,因此可以将最后进行的调用封装在if
语句中,该语句检查DOM
的存在。
if (document) {
stuff();
}
或者,更好的是,由于函数只在一个地方调用,
if (document) {
/* code of stuff() */
}
相关文章:
- 从远程脚本获取用户IP
- 将jQuery转换为用户脚本的普通Javascript时遇到问题
- 如何使用Node.js脚本从Rally获取用户的修订历史
- 如何在页面一侧的浮动框中显示用户脚本的输出
- 阻止用户将脚本输入wordpress post
- 何时可以;我的用户脚本在Javascript中触发右键单击(上下文菜单)
- 如何通过脚本访问用户控制值
- 如何只重新加载用户脚本,即不重新加载页面
- 如何防止用户使用浏览器选项禁用脚本
- 打开图形:Java脚本:必须使用活动访问令牌来查询有关当前用户的信息
- 如何在边缘脚本完成后将用户定向到新页面
- Chrome/Tampermonkey 用户脚本存储在文件系统上的什么位置
- 如何通过 html 正文中的脚本区分用户操作和操作
- 如何向登录用户隐藏选择加入脚本
- 一个用户脚本的两个实例如何在帧之间进行通信
- 如何让你的用户脚本处理那些没有'还不存在
- 用户控制(.ascx)和java脚本函数
- 从用户脚本空间重新定义Firefox中的原生浏览器功能
- 如果用户登录不起作用,则运行脚本
- java 脚本用户定义 $ 函数,如 jquery