当普通的Ruby(而不是Rails)文件发生变化时自动运行RSPec

Ala*_*ith 2 ruby rspec

我正在编写一个旨在从命令行运行的Ruby脚本.该脚本具有相应的RSpec文件,用于验证其功能.文件夹结构是:

./main_script.rb
./spec/main_script_spec.rb
Run Code Online (Sandbox Code Playgroud)

运行rspec spec在顶级目录按预期工作../spec/main_script_spec.rb显示文件的测试结果.每次我更改主脚本文件或spec文件时,我都希望避免手动运行.我所有的搜索结果都会出现像guard一样的东西(据我所知)都是为Rails应用程序设计的.

如何设置RSpec以监视脚本或规范更改并使用非Rails Ruby代码自动运行?

all*_*eri 8

像David所说,Guard可以用来观看各种文件,并在修改这些文件时执行操作.它不必与Rails应用程序一起使用.我在过去使用过类似的东西guard.这是我做的:

将以下内容放入您的Gemfile:

source 'https://rubygems.org'

gem 'guard'
gem 'guard-shell'
gem 'rspec'
gem 'rb-fsevent', '~> 0.9'
Run Code Online (Sandbox Code Playgroud)

然后运行:

$ bundle install

使用以下命令在主目录中创建Guardfile:

$ guard init

Guardfile,注释掉示例并添加:

guard :shell do
  watch(%r{^*\.rb}) { `bundle exec rspec spec/` }
end
Run Code Online (Sandbox Code Playgroud)

这告诉guard要注意对目录中任何ruby文件的修改,并bundle exec rspec spec/在它们更改时执行命令(反引号用于在shell中执行命令).

然后在当前目录中打开一个新的终端窗口并启动guard服务器以开始观察文件:

$ bundle exec guard

现在,当您修改目录中的ruby文件时,您的Rspec测试套件应该会自动运行.