【问题标题】:Running and debugging tests in a Docker container在 Docker 容器中运行和调试测试
【发布时间】:2018-09-27 05:20:20
【问题描述】:

我想将我的整个 node.js 应用程序 docker 化并在 docker 容器中运行所有内容,包括测试。

如果您使用的是 PhantomJS,这听起来很容易,而且我确实尝试过,并且成功了。

我喜欢在 Chrome 中运行测试的一件事 - 易于调试。您可以启动 Karma 服务器,打开 devtools,在测试文件中设置断点(使用 debugger 语句)并运行 Karma - 它将连接到服务器运行测试,并在断点处停止,允许您从那里执行各种操作的东西。

现在如何在 docker 容器中执行此操作?

  • 我是否应该在主机上启动 Karma 服务器(使用 Chrome)并以某种方式告诉容器内的 Karma-runner 连接到它以运行测试? (我该怎么做呢?)

  • 是否可以在 docker 容器中运行 Chrome(这听起来确实是一个愚蠢的问题,但是当我尝试 docker search desktop 时会出现一堆问题,所以我认为这是可能的(?)

  • 也许可以在 PhantomJS 中调试测试(尽管我怀疑它是否会像使用 Chrome 开发工具一样方便)

您能分享一下您在 docker 容器中运行和调试 Karma 测试的经验吗?

upd:我刚刚意识到可以在容器中运行 Karma 服务器,并且仍然可以通过从主机导航到 Karma 页面(例如 localhost:9876)来调试测试。

但是,我仍然有一个问题 - 我也打算设置并开始使用 Protractor。现在这些测试肯定需要在真正的浏览器中运行(PhantomJS 有太多的怪癖)。谁能告诉我如何从 docker 容器中运行 Protractor 测试?

【问题讨论】:

    标签: node.js docker phantomjs karma-runner protractor


    【解决方案1】:

    我不知道Protractor 和它的工作流程,但如果您需要在容器中安装浏览器,您是否看到this 文章?我冒昧地引用这个:

    $ docker run -it \
        --net host \ # may as well YOLO
        --cpuset 0 \ # control the cpu
        --memory 512mb \ # max memory it can use
        -v /tmp/.X11-unix:/tmp/.X11-unix \ # mount the X11 socket
        -e DISPLAY=unix$DISPLAY \ # pass the display
        -v $HOME/Downloads:/root/Downloads \ # optional, but nice
        -v $HOME/.config/google-chrome/:/data \ # if you want to save state
        -v /dev/snd:/dev/snd --privileged \ # so we have sound
        --name chrome \
        jess/chrome
    

    【讨论】:

    【解决方案2】:

    要对量角器测试用例进行 docker 化,请使用 Dockerhub caltha/protractor(或)webnicer/protractor-headless 中的任一图像。

    然后运行这个命令“docker run -it {imageid} protractor.conf.js”。请参阅这些存储库中的说明

    【讨论】:

      猜你喜欢
      • 2020-04-22
      • 2020-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      • 1970-01-01
      • 2017-05-04
      • 1970-01-01
      相关资源
      最近更新 更多