`
aaronluo
  • 浏览: 28673 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

[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执行啦!!!!!
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics