Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails测试套件中显示的数据库调用_Ruby On Rails_Testing_Rspec_Capybara - Fatal编程技术网

Ruby on rails rails测试套件中显示的数据库调用

Ruby on rails rails测试套件中显示的数据库调用,ruby-on-rails,testing,rspec,capybara,Ruby On Rails,Testing,Rspec,Capybara,我的测试套件由guard、rspec、spork和capybara组成。我对TDD非常陌生,但在学习它之前,我经常会在服务器输出中看到rails生成的数据库查询(使用thin)。当查询需要进一步优化时,我可以立即看到这一点,这非常有用 我想知道是否可以使用上述工具的任何gem实现这种行为,或者是否有另一个gem可以在我的测试中用于输出类似信息 我在测试套件中使用的主要gem如下: group :development, :test do gem 'rspec-rails' gem 'gu

我的测试套件由guard、rspec、spork和capybara组成。我对TDD非常陌生,但在学习它之前,我经常会在服务器输出中看到rails生成的数据库查询(使用thin)。当查询需要进一步优化时,我可以立即看到这一点,这非常有用

我想知道是否可以使用上述工具的任何gem实现这种行为,或者是否有另一个gem可以在我的测试中用于输出类似信息

我在测试套件中使用的主要gem如下:

group :development, :test do
  gem 'rspec-rails'
  gem 'guard-rspec'
  gem 'spork-rails'
  gem 'guard-spork'
end

group :test do
  gem 'capybara'
  gem 'selenium-webdriver', "~> 2.35.1"
end

您可以检查生成的数据库查询的测试日志:

$ tail -f log/test.log

它显示所有执行的查询以及一些用于设置测试数据库的insert和rollback语句。

这是一个常见问题解答;在您的环境/test.rb文件中尝试
ActiveRecord::Base.logger.level=logger::DEBUG

接下来,要学习Rails和TDD,不要使用水豚。坚持RSpec。我应该说坚持使用普通的测试用例,但是RSpec已经占用了这个空间,所以你会发现很多在线支持


水豚是用来测试先进的和端到端的东西。您只需要TDD就可以确定您的数据库包含某某,并且您生成的网页包含某某,所以请坚持这样做

我怀疑默认情况下查询是关闭的。问题是记录原始数据库查询不安全(在生产环境中,obv),因此现代Rails会关闭所有数据库查询记录。@Philp我刚刚测试了我最近的应用程序im。如前所述,它在测试环境中对我有效,我不记得做过任何记录器调整。这确实有效,但我如何使用guard将其自动化,以便将其作为测试的一部分输出。潜在的选择性?我会继续胡闹,看看我能想出什么。你通常会在一个单独的控制台窗口中跟踪测试日志。这是一个与rspec中的测试运行不同的bash过程。可能有一种方法可以将日志语句拉入测试结果屏幕,但结果可能是屏幕上的大量信息。把你发现的情况报告出来!会的,我还需要一段时间,直到我真的需要尝试并自动化它,但目前这很好地完成了这个任务,感谢延迟响应,这不起作用,它为nil:NilClass(NoMethodError)提供了未定义的方法“level=”,如果需要的话,有一个完整的堆栈跟踪。