2013-10-05 31 views
1

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

我想知道这种行为是否可以用上述工具的任何宝石来实现,或者如果在我的测试中可以使用另一个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 

回答

3

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

$ tail -f log/test.log 

它显示了所有执行的查询+一很少用于设置测试数据库的插入和回滚语句。

+0

我怀疑查询是默认关闭的。问题是记录原始数据库查询是不安全的(在生产中,obv),所以现代Rails保持关闭所有数据库查询日志记录。 – Phlip

+0

@Philp我刚刚测试我最近的应用程序。它适用于我在上述测试环境中,我不记得做任何记录器调整。 –

+0

这是行不通的,但是我怎么去关于如何使用guard来自动化它,以便将它作为我的测试的一部分输出。可能可选?我会一直搞乱,看看我能想出什么 – DazBaldwin

0

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

接下来,学习Rails & TDD,不要使用Capybara。坚持与RSpec。我应该说坚持正常的测试用例,但RSpec已经吃掉了这个空间,所以你会发现很多的在线支持。

水豚是测试先进的&端到端的事情。您只需要TDD,即您的数据库包含如此之多,并且您生成的网页包含诸如此类的内容,所以请坚持。

+0

对不起延迟响应,这是行不通的,它给nil:NilClass(NoMethodError)提供未定义的方法'level =',如果你需要的话,会有一个完整的堆栈跟踪。 – DazBaldwin