在运行`rspec`时执行`git checkout`

asy*_*ric 7 ruby git rspec

在使用RSpec执行长时间运行的测试套件时,我想检查另一个git分支.

在这种情况下,RSpec如何表现?它是否将所有文件读入内存作为其启动过程的一部分(在这种情况下更改分支将不起作用),还是仅在需要时才读取它们?

Sim*_*tti 7

如果在测试已经运行时签出,它将继续执行与前一个分支相关的规范,只要该过程不启动其他进程(例如rake test,如果它们作为不同的任务提供,则可以在不同的进程中启动不同的测试套件).

但是,如果您的规范需要在运行时访问Ruby环境之外的资源,例如在文件系统上写入/读取文件,并且该资源在新分支中不可用或者已更改,那么规范可能会返回无效结果.

换句话说,只要规范只依赖于Ruby进程启动时可能由Ruby虚拟机加载的代码,那么你就可以了.

无论是否推荐,这是另一个故事.我个人会避免它,以防止意外的副作用.