gpt4 book ai didi

javascript - 在每次 Git 推送时测试 JavaScript 代码(用于 Web 前端)的最简单方法

转载 作者:太空狗 更新时间:2023-10-29 14:35:18 26 4
gpt4 key购买 nike

我正在寻找最简单的极简主义方法来在每个 Git 推送上为 HTML/CSS/JS Web 应用程序的相对简单的 JavaScript 代码(在 GitHub 上)创建自动化测试,其方式还可以测试HTML 元素(通过 JS 操作)。

我假设它需要某种“ headless 浏览器”测试——在这种情况下,我只需要它在谷歌浏览器中执行。 (此应用程序不打算在任何其他浏览器中使用。)

我已经创建了一个执行测试的 JS 函数。此函数应在整个应用程序(网页)加载(HTML、CSS、JS)后执行,因为它涉及对 HTML 元素的操作。举个简单的例子,假设我总是期望一个大于 5 的偶数。比方说,这个数字是应用程序 HTML 页面上的一个 div 元素中段落元素的计数。在这种情况下,函数将是:

function my_test() {
var is_valid = true;
var num = $("#my_div").find("p").length; // (JQuery is included in the app)
if (num % 2 != 0) {
console.log("it's not an even number");
is_valid = false;
} else if (num <= 5) {
console.log("it's smaller than 5");
is_valid = false;
}
return is_valid ;
}

所以问题是,只要git push,让这个测试在终端自动运行的最简单方法是什么?被执行(由任何想为存储库做贡献的人)?

我知道有 Node.js 测试框架,例如 Tape,但它似乎很复杂,因为我想象(或希望)可以更简单地完成;另外,如果我安装它们,它会向我不太喜欢的原本很小的应用程序(大约 0.3 MB)添加 MB。

这样的测试可以自动运行,例如Travis,例如我可以添加一个“.travis.yml”文件,用

language: node_js
node_js:
- "node"

然后在 package.json 文件中我可以添加例如这条线 "test": "jshint my_code.js"使用 jshint 包测试 my_code.js。

但是有没有办法执行我自己的简单 JS 函数作为测试?例如,说“首先用我所有相关的 JS 代码加载我的页面(HTML、CSS),然后执行我的自定义 my_test() 函数(上面),显示(在终端中)控制台中输出的任何内容(通过 console.log('output') ),并且,如果最后它没有返回 true ,则中断 git push”。

我很感激任何建议,但最好是清楚地描述应该采取哪些步骤来设置这一切。例如,“用这样那样的内容创建 .travis.yml,用这样那样的内容添加 package.json 文件,等等”。和/或是否也可以使用例如Tape 没有安装在应用程序之上,而是在执行测试时自动调用它,那将如何做到这一点。

(我根本不坚持使用 Travis 或 Tape,这些只是示例。)

(更新:我现在接受了我自己的解决方案 - 因为没有更好的解决方案 - 但如果有人可以提供更简单/更好的解决方案,我会更改接受的答案。)

最佳答案

Git 具有允许在发生某些事情时运行不同任务的钩子(Hook)。这种情况下,需要在pre-push hook

中添加逻辑

示例预推送脚本:https://github.com/git/git/blob/master/templates/hooks--pre-push.sample

  1. .git/hooks/pre-push 中编辑你的钩子(Hook)>
  2. 用于 git hooks 的脚本可以用任何脚本语言制作,因此在这种情况下,您将使用您的 js 代码。
  3. 不要忘记为节点添加shebang
#!/usr/bin/env node
  1. 如果您想停止推送,请确保返回非零响应。

关于javascript - 在每次 Git 推送时测试 JavaScript 代码(用于 Web 前端)的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54372069/

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