Docker容器中运行Nightwatch测试:本地文件路径与监听事件问题
我来帮你梳理下这两个问题哈:
1. 在Docker环境下指定本地文件路径的方法
因为Nightwatch是在Docker容器里运行的,容器有独立的文件系统,所以你得先把本地的文件目录挂载到容器内部,才能让测试代码访问到本地文件。具体步骤如下:
- 首先,启动Docker容器时,用
-v参数把本地文件所在的目录挂载到容器内的某个路径。比如你的本地文件路径是/home/user/projects/myproject/src/assets/temp.jpg,可以把整个assets目录挂载到容器的/app/assets:docker run -v /home/user/projects/myproject/src/assets:/app/assets your-nightwatch-test-image - 然后在Nightwatch的测试代码里,使用容器内的路径来指定文件。因为
path.resolve会解析成绝对路径,所以直接写容器内的路径即可:.setValue('input#front', require('path').resolve('/app/assets/temp.jpg'), function(result) { this.assert.equal(result.status, 0) }) - 小提示:尽量用绝对路径,避免因为容器工作目录的设置不同导致路径错误。另外要确保挂载的目录权限正确,容器内的运行用户要有读取文件的权限。
2. setValue是否会触发change监听事件
肯定会的!Nightwatch的setValue方法针对文件输入框操作时,是模拟真实用户选择文件的行为——当你用它给文件输入框设置好路径后,浏览器会自动触发该元素上的change事件,也就是你代码里绑定的readFront函数会被执行。
如果你想验证这一点,可以在测试里加个额外的断言:比如检查readFront执行后页面上的变化(比如图片预览是否出现),或者用测试框架的mock功能验证函数是否被调用过。
内容的提问来源于stack exchange,提问作者Muslim Beibytuly
相关产品推荐
相关产品推荐

