繁体   English   中英

调试Rails测试

[英]Debugging rails tests

测试一直是我一直避免的事情,直到我意识到编写良好的测试我可以避免不得不进入控制台并一遍又一遍地运行一串命令。 但是,我遇到的最大问题是,当测试失败时,我看不到有多少数据可用于调试。 例如,当我测试模型时,我需要查看模型属性,并且需要控制何时构建,创建和保存模型,以及检测这些状态的方法。 使用导轨固定装置和普通的香草测试,这很烦人。

如何使调试夹具和导轨测试变得更容易? 测试失败时,是否可以显示更多类似控制台的信息? 我可以使用哪些测试工具更轻松地进行调试? 毕竟,调试测试本身会浪费大量时间,并且是首先使用它们的最大障碍。

谢谢!

日志记录有助于调查和解决问题。 不仅在测试中,而且还在生产中部署时。 您可以记录模型的状态和其他有用的信息。 此外,标准的rails日志记录了发送到数据库的SQL,因此您可以轻松查看那里发生了什么。 在开发和测试中,默认情况下SQL日志记录处于打开状态,其外观类似于以下内容:

[2015-09-24 23:19:36 ledger DEBUG]:   [1m[36m (0.2ms)[0m  [1mBEGIN[0m
[2015-09-24 23:19:36 ledger DEBUG]:   [1m[35mSQL (2.1ms)[0m  INSERT INTO "projections_tags" ("ledger_id", "tag_id", "name", "authorized_user_ids") VALUES ($1, $2, $3, $4) RETURNING "id"  [["ledger_id", "ea9a68c5-c7c8-4964-b078-45bfc93d41ef"], ["tag_id", 9], ["name", "test"], ["authorized_user_ids", "{1}"]]
[2015-09-24 23:19:36 ledger DEBUG]:   [1m[36m (0.4ms)[0m  [1mCOMMIT[0m

我将log4r用作日志记录库,因为它可以更好地控制日志输出。

我也不喜欢调试,但在某些情况下确实有帮助。 在这种情况下, byebug是您的朋友。

和科西斯rails consolerails dbconsole

调试测试与调试代码没有太大区别。

Rails已经附带了byebug gem(如果需要,请取消注释):

group :development, :test do
  gem 'byebug'
end

现在您可以放了

debugger

在代码中的任何地方排行。

Byebug支持许多其他功能,您可以在此处找到: https : //github.com/deivid-rodriguez/byebug

还请检查https://github.com/deivid-rodriguez/pry-byebug项目,该项目可提供更好的调试体验。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM