我找到了这个关于(自动)测试插件的主题,但尚未发现任何提及如何测试主题或主题组件的内容。是否有任何关于如何在主题中使用 QUnit(或类似工具)的示例?
您可以将其添加到用户可选的主题中,或在主题管理页面使用测试链接。
抱歉,我指的是自动化测试——我会修改我之前的帖子。我想到的是一些插件已经在使用的类似 QUnit 的工具。
不,目前无法为主题/组件添加 QUnit 测试……
@david 像插件那样添加对 /test 文件夹的支持可行性如何?我们还需要在运行测试时启用主题,因为核心测试是在没有任何主题的情况下运行的,对吧?
完全可行,但需要做一些工作。目前,所有主题 JavaScript 文件都被打包成一个文件。我们需要确保测试代码被放入一个新的、独立的打包文件中,这样它们就不会被普通访客访问到。完成这一步后,再为单个主题创建运行 QUnit 测试的方法。
另外需要考虑的是,我们不在生产服务器上开放 /qunit 路由。由于主题通常是在生产服务器上进行开发的,我们可能需要重新考虑这一点 ![]()
在我看来,这是主题组件的主要缺点之一。它们部署起来非常简单,这很棒,但测试往往被搁置。
如果我的理解正确,任何可以通过主题组件完成的操作,也可以通过插件实现。前者更易于部署,而后者则支持测试。
是的,这大体上是准确的。最终这取决于您在定制方面的取舍。例如,添加自定义样式表可能无法进行测试,即使是在插件中也是如此。而添加自定义 JavaScript 控件和小部件则变得值得商榷。
我觉得我们在进行 Ember CLI 工作时应该考虑这个问题。为主题设置某种测试运行器并非不可能,我们可以在 discourse-theme gem 中内置一些基础功能,以便使用 Ember CLI 搭建本地测试环境。
运行主题测试需要完整的 Discourse 安装,对吧?由于存在如此多的相互依赖关系,我认为我们无法独立测试主题:thinking:
也许 theme-cli 可以包含一些逻辑,拉取 discourse_dev Docker 镜像并在其中运行 qunit 测试?
ember cli 的核心理念是将服务器端与客户端清晰分离。我们可以仅打包足够的 JavaScript 部分来测试客户端,而无需运行 Rails 服务器。你肯定需要安装 Node 和 ember cli,但或许可以省去安装完整的 Discourse 技术栈(包括 Redis 和 Postgres)的麻烦。
这可能会有些棘手,但绝对值得铭记。
我们现在支持主题中的测试(这是较晚的更新,主题测试的支持是在 2021 年中期添加的)。您可以前往本地环境或生产站点中的 /theme-qunit,任何已安装且具有测试的主题/组件都将在此列出。请参阅 Discourse Tab Bar for Mobile 或 Tag icons component 以获取示例。
这太棒了。这会扩展到测试插件中的 JavaScript 吗?
您是指能够在生产环境中运行测试吗?目前这仅限于主题。\n\n(当然,您可以在本地运行插件 JS 测试。)
我认为目标将是能够在 GitHub CI 中运行它们,就像我们目前可以使用 specs(Theme.和 Plugin JS)一样?
是的,我们为所有官方插件在 CI 中运行测试。