【问题标题】:How to automate testing user-version of npm package instead of running the development version on continious integration?如何自动测试 npm 包的用户版本,而不是在持续集成上运行开发版本?
【发布时间】:2014-03-14 07:43:09
【问题描述】:

偶尔会发生模块的开发版本在我的开发工作区中工作并传递 Travis-CI 但在发布到 npm 后结果发现最终用户包已损坏。

例如,如果您使用的子模块应该在 dependencies 中但在 devDependencies 中,那么 CI 将通过(但还有很多其他可能的损坏)。

你如何自动化测试呢?你使用外部索具吗?有秘密模块吗?你们有用户接受度测试套件吗?

我使用带有 Travis-CI 的 Github,但标准设置使用开发安装。

【问题讨论】:

    标签: node.js continuous-integration automated-tests npm


    【解决方案1】:

    我建议设置您自己的 CI 服务器,它基本上只做一件事,npm install package ; cd node_modules/package ; npm test。这将确保您的软件包至少可以安装在您的服务器上。

    我听说 Jenkins 在这方面做得很好(至少,node.js 核心团队似乎正在使用它),但还没有任何第一手经验。我们只是计划在几周内完成设置。

    此外,拥有一些依赖于您的外部模块并对其进行测试会有所帮助。 :)

    【讨论】:

    • 我不喜欢设置自己的 CI,因为我想(也)将此解决方案用于开源代码并将其平滑到常见的 Github/Travis 工作流程中。
    【解决方案2】:

    曾几何时,我发现npm 可以让我发布可卸载的软件包。所以我在我的Gruntfile 中添加了一个目标:

    1. 发出 npm pack 从我的源创建一个包。

    2. 进入创建的目录(由我的Gruntfile 自动创建),使用npm install <path to the package created in the previous step> 进行测试安装新包。

    我有一个发布新版本的目标,只有在上述步骤成功时才会发布。

    上述步骤不会捕获您在问题中提到的依赖问题,但可以轻松扩展它们以捕获它。为此,我将添加一个或多个测试,使上述步骤 2 中安装的包调用 require 及其所依赖的所有内容。

    【讨论】:

    • 这听起来不错:我已经有一个 npm prepublish 脚本链接到适合的 grunt 任务;我认为这一切都应该在 node/grunt 中实现,即使在 Travis 上并将内容写入临时目录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多