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

时间:2015-09-16 10:57:43

标签: ruby git rspec

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

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

1 个答案:

答案 0 :(得分:6)

如果在测试已经运行时签出,它将继续执行与前一个分支关联的规范,只要该进程不启动其他进程(例如,使用rake test可能会启动不同的测试套件处理,如果它们作为不同的任务提供)。

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

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

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