【问题标题】:Angular: How to force run unit tests when running Git push?Angular:运行Git push时如何强制运行单元测试?
【发布时间】:2019-02-22 20:45:05
【问题描述】:

我见过 Angular 项目,其中每次执行构建以及运行 git push 命令时都会运行单元测试。如果在任一命令期间任何测试失败,则在所有单元测试通过或绕过之前,该过程不会执行。我想为我的项目进行这种设置作为最佳实践。请帮忙:)

【问题讨论】:

  • 我认为在运行git push 时运行单元测试不是一个好主意,因为它们是两个不同且独立的进程,它们应该保持原样。更好的方法是实现一个 pre-commit 钩子,如果有任何失败的测试,它会阻止提交代码。
  • 你应该看看 husky,它会帮助你直接从你的 package.json 创建一个 git 钩子。也就是说,我认为这样做不是一个好主意,除非你的测试很少,或者它们运行得非常快。否则你会感到非常无聊。没有人愿意等待 500 万个才能推送。你应该依赖你的 CI。预提交或预推送钩子适用于快速处理,例如 linting(甚至可能需要太多时间)或运行更漂亮。
  • 使用包调用哈士奇。有了它,您不必担心创建文件夹或文件。

标签: javascript node.js angular git karma-jasmine


【解决方案1】:

要在提交或推送之前运行构建、单元测试等,您可以使用Husky 之类的工具。

【讨论】:

    【解决方案2】:

    Git 提供了一种使用 .git/hooks 挂钩事件的方法

    您可以在项目中添加一个名为.git/hooks 的文件夹,并在该文件夹中添加一个名为pre-commit 的子文件夹,您可以在其中放置要运行的脚本。这就是您的测试命令。

    例如 test.sh 将包含:ng test

    更多关于挂钩 git 事件的文档可以在这里找到:https://git-scm.com/docs/githooks

    如果您有任何问题,请告诉我,我很乐意修改我的答案!

    【讨论】:

    • 不是.githooks,是.git/hooks
    • @phd 你是对的,我的错误,答案已被编辑/更新!谢谢!
    【解决方案3】:

    添加一个名为 husky 的包作为 devDependencies。

    npm i husky --save-dev
    

    现在使用 husky 捕获 pre-commit webhook,在您的 package.json 中执行此操作,添加此对象:

    "husky": {
       "hooks": {
           "pre-commit": "ng test"
       }
    }
    

    这将确保每次提交时,ng 测试 在实际提交发生之前运行。

    【讨论】:

    • 如何在 pre-commit 中添加多个命令,如 ng lint、ng e2e、ng test 等?
    • 您可以在一行中组合多个命令,例如“ng lint && ng e2e && ng test”
    猜你喜欢
    • 1970-01-01
    • 2019-01-15
    • 2018-01-12
    • 2012-11-28
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多