javascript - 在没有 NodeJS 的情况下编写 Javascript 测试
问题描述
我一直在努力回到做非节点依赖 javascript 的根源,在这种特殊情况下进行测试。像许多开发人员一样,我陷入了学习框架的陷阱,进而忘记/从未理解过一些 javascript 编程的基本范式。
问题
我正在尝试测试我为可折叠元素创建的简单 es6 脚本。它可以使用框架进行测试,但是脚本只是插入到 html 文件的底部,而不是以任何更复杂的方式执行,并且需要在没有复杂过程的情况下保持功能。我知道这不是执行此操作的传统方法,您可以使用现代技术轻松解决问题,但这是我需要将其组合在一起的方式。
可折叠.js
const initialiseCollapsible = (collapsible) => {
let collapsibleButton = collapsible.querySelector(".collapsible__button");
let collapsibleContent = collapsible.querySelector(".collapsible__content");
collapsibleButton.setAttribute("aria-expanded", "false");
collapsibleContent.setAttribute("aria-hidden", "true");
collapsibleButton.addEventListener("click", () => {
// cast the value of aria-expanded as a boolean
let expanded =
collapsibleButton.getAttribute("aria-expanded") === "false"
? false
: true;
// Toggle the expanded attribute
collapsibleButton.setAttribute("aria-expanded", !expanded);
collapsibleContent.setAttribute("aria-hidden", expanded);
});
};
(() => {
[...document.getElementsByClassName("collapsible")].forEach((collapsible) => {
initialiseCollapsible(collapsible);
});
})();
该文件旨在遍历 的所有实例.collapsible
,添加事件侦听器以便它们可以正确切换,并最初关闭它们(内容必须在禁用 javascript 的情况下可访问)。
1) 模块功能
使用 es6 模块,我知道它通常使用诸如 babel 之类的东西进行转换。而对于requireJS,我仍然不明白module.exports
浏览器是否会理解,目前它会抛出错误,因为它不理解语法。有没有办法解决这个问题?所以我可以编写一个在 html 文件中调用的功能脚本,同时仍然能够将它导入到测试文件中以运行测试?我假设我最终可以复制并粘贴它以使其可用。
2)测试事物
我正在努力考虑如何准确地测试这段代码。我看到了一些潜在的测试:
给定一个可折叠的 html 元素,
- 扩展/隐藏已正确设置为开始(测试查询选择器是否有效并且设置的属性是否正常工作) 问题我不太明白如何在没有某种我可以篡改的虚拟 dom 的情况下模拟它,有没有好的图书馆为此?那些将允许我创建一个文档 html 元素,我可以在其上运行脚本代码以查看更改。
- 现在,可折叠按钮上有一个与示例代码匹配的 clickEvent。问题这对我来说几乎就像一个功能测试,我正在测试当我点击按钮时会发生什么,就像黄瓜/硒会是一个更好的途径。这么简单的事情有大量的开销,但是有没有更简单的方法来做到这一点?
我意识到这可能是 10 个问题中的大约 1 个问题,但是如果您对所提出的问题有任何反馈/解决方案,请随时贡献。
解决方案
推荐阅读
- raspberry-pi - @ 在 rpi 上从自动启动运行时不能在单声道应用程序中工作
- java - Android 组件导航如何防止地图页面在每次点击时刷新
- python - 带空格的引用列名
- selenium - Selenium Javascript 无法切换帧
- python - 一个区间内的多个最大值
- string - 在 Powershell 中从字符串中提取字符串
- sql - 使用 SQL Server Management Studio 编写脚本以从未知表中提取数据
- maven - pom.xml 中更新了依赖版本,但编译依赖版本没有更新?
- python - 通过子进程对 WSL 的鱼执行命令
- javascript - 我如何通知用户,他们输入了重复条目