当前位置: 代码迷 >> Ruby/Rails >> [RoR小学生] - 使用Guard回自动运行Rspec测试
  详细解决方案

[RoR小学生] - 使用Guard回自动运行Rspec测试

热度:87   发布时间:2016-04-29 02:21:26.0
[RoR小学生] - 使用Guard来自动运行Rspec测试

初次看到Guard的解释是在Ruby on Rails Tutorial里面,当时以为是一个自动化测试工具而没有在意,考虑到自己的菜鸟等级,估计手工运行测试的机会比较多,没有考虑使用Guard。最近动手开始写一些代码了,发现每次都要切换到命令行来运行~bundle exec rspec spec/?实在是头疼,于是又重新看了看Guard,官方网站是?https://github.com/guard/guard?发现我对Guard的理解实在是大错特错啊!!!原来Guard是用来监控文件系统内的文件变动事件,通过N多的插件来处理这些事件,看了下Guard的插件真的是很多,因为现在做rails开发,所以仅仅研究rails的部分啦,其他的插件有空再研究!

?
用Guard来自动运行Rspec测试的中心思想是使用Guard来监控app目录,config目录,spec目录下代码的变化,或者说是任何需要触发测试的目录或者文件,一旦这些被监控的文件发生变化,则自动触发相应的插件来执行一些功能。
?
首先要安装Guard以及Guard-Rspec插件,这个比较简单了,直接修改Gemfile。这里注意最后一个gem实际上是我根据运行Guard的提示添加的,如果想看到这个warning,可以先不添加最后一个gem。在添加最后一个gem的同时还有一句代码要添加到gemfile的开头 'require 'rbconfig',不过一样有提示,不用担心
?
?
然后就是熟悉的~bundle install?了。安装成功后开始初始化Guard,运行命令~bundle exec guard init rspec, 这个命令就针对rspec插件生成了一个Guardfile,这个Guardfile是用来配置Guard需要监控的文件对象了,下面看看Guardfile里面的内容
  • guard :rspec, all_after_pass: flase 这行说明了这是个针对rspec插件的Guardfile
  • watch指定了要监控的文件对象了,虽然我还弄明白第一个监控到底有啥作用,因为它撒都不触发,但是在Tutorial里面写了,就先写这里吧
  • watch接受正则表达式来指定一组文件来监控
  • 如果后面接block,参数m是正则表达式匹配成功的分组数组,正则表达式分组用()表示哦~~亲不要忘记了基本知识。在block里面就拼凑出需要交给rspec插件执行的测试用例文件名吧
?

?
最后就是运行guard了 ~bundle exec guard
?

?
试着修改一下spec/models/里面的任意一个测试用例,会发现这个用例在被保存后自动由rspec执行啦!!!!!
?
  相关解决方案