我想对我的整个 node.js 应用程序进行 docker 化,并在 docker 容器中运行所有内容,包括测试。
如果您使用的是 PhantomJS,这听起来很简单,我实际上已经尝试过并且它有效。
我喜欢在 Chrome 中运行测试的一件事 - 易于调试。您可以启动 Karma 服务器,打开 devtools,在测试文件中设置断点(使用 debugger
语句)并运行 Karma - 它将连接到服务器运行测试,并在断点处停止,允许您从那里进行各种操作的事情。
现在如何在 docker 容器中执行此操作?
我是否应该在主机上启动 Karma 服务器(使用 Chrome)并以某种方式告诉容器内的 Karma-runner 连接到它,以运行测试? (无论如何我该怎么做?)
是否可以在 docker 容器中运行 Chrome(这听起来像是一个愚蠢的问题,但是当我尝试
docker search desktop
时出现了一堆问题,所以我认为这是可能的(?)也许可以在 PhantomJS 中调试测试(尽管我怀疑它会像使用 Chrome devtools 一样方便)
能否请您分享您在 docker 容器中运行和调试 Karma 测试的经验? 罢工>
upd:我刚刚意识到可以在容器中运行 Karma 服务器,并且仍然可以通过从主机导航到 Karma 页面(例如 localhost:9876)来调试测试。
但是,我仍然有一个问题 - 我也打算设置并开始使用 Protractor。现在这些测试肯定需要在真实的浏览器中运行(PhantomJS 有太多的怪癖)。谁能告诉我如何从 docker 容器内运行 Protractor 测试?
最佳答案
我不知道 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
关于node.js - 在 Docker 容器中运行和调试测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29740651/