我们刚刚遇到yeoman-generator
测试问题,当它们在隔离运行时通过但在与其他测试并行运行时失败。
具体来说,我们调用require('yeoman-generator').test.run()
来运行生成器,然后使用require('yeoman-generator').assert.file
检查是否生成了正确的文件,这就是documentation所说的内容。但是,assert
有时会失败,说文件不存在。
test.run()
和assert.file
之间的互动如何运作?文件在哪里写的?是全局变量/临时文件是否始终相同,因此可以被同时运行的其他测试覆盖?
这是the test,是failing build的一个例子。
detailed discussion存在github问题,此处讨论了suddenly started passing在单独运行时的运行方式。
我们正在使用并行运行测试的Jest testing framework。
答案 0 :(得分:2)
看起来Yeoman测试无法并行运行。
require('yeoman-generator').test.run()
会创建临时目录,但会将当前工作目录更改为该目录。这会干扰其他依赖CWD的测试,因此Yeoman测试不能与其他测试并行运行。
helpers.js
中的run-context.js
和process.chdir
中的相关评论。