我使用黄瓜,rails3,rspec2和自动测试.我试图找出为什么我的功能是无限循环.我怀疑在测试期间有些文件被更改,但我不确定哪一个.我添加了一些例外,我的.autotest没有骰子.
我可以采取哪些步骤来解决这个问题?
如果我可以看到什么文件触发重新运行,或在运行时,什么文件被观看/未观看,那将是很酷的.
这是我的.autotest内容
require 'autotest/growl' Autotest::Growl::clear_terminal = false # Skip some paths Autotest.add_hook :initialize do |autotest| %w{.git .DS_store db log tmp rerun.txt}.each { |e| autotest.add_exception(e) } end
解决方法
好的,所以我想出来了.我进入自动测试的来源,以更好地了解发生了什么.它在所有异常中创建一个RegexPunion,并忽略相对路径与编译表达式匹配的文件.
为了更好地了解这个错误,我将项目目录中的所有内容都添加到.autotest中,除了./app,./lib,./public,./script,./spec和./features之外.这样的事情
# .autotest - to troubleshoot Autotest.add_hook :initialize do |at| at.add_exception(%r{^\./\.git}) ... at.add_exception(%r{^\./db}) ... at.add_exception(%r{^\./rerun.txt}) ... end
当我这样做,我没有得到一个无限循环.之后,我刚刚开始评论每个例外.原来,我不得不手动忽略的唯一的文件是Gemfile.lock.由于某种原因,这或许被改变或使自动测试混淆到使黄瓜循环的程度.
因此,这个.autotest解决了这个问题:
# .autotest - to fix Autotest.add_hook :initialize do |at| # Gemfile.lock is causing cucumber to run infinitely. Don't watch it. at.add_exception(%r{^\./Gemfile.lock}) end