gpt4 book ai didi

ruby-on-rails - 在 Rails 中测试库/例程(即不是模型或 Controller )的方法

转载 作者:太空宇宙 更新时间:2023-11-03 16:24:19 26 4
gpt4 key购买 nike

我正在开发一个 Rails 应用程序,该应用程序用作小型组织的目录/电话簿应用程序。

背景

该应用程序基本上整合了来自多个内部 Web API 的信息,并将它们存储在本地 SQLite3 数据库中。该应用程序基本上是一个美化的前端,可以直接从该数据库中读取数据。

每隔 X 小时,就会安排一个 rake 任务,将信息从 Web API 提取到数据库中。在第一次运行时,数据库显然是空白的,但在随后的运行中,它会更新现有数据并在必要时创建任何新记录。查询 api 和插入数据库的所有逻辑都在 lib/update.rb

问题

我应该如何为上述工作流程设置测试?我知道 Rails 非常好 support for fixtures .但在这种情况下,我不想将预配置数据设置为夹具。我想模拟 Web API 调用并通过 lib/update.rb 运行它以确保它以正确的逻辑正确插入。我还想运行几次以模拟第一次运行和后续运行并断言正确的行为。我是否应该将所有内容作为单元测试放在 /test/unit/update_test.rb 中?

另外,我如何管理单元测试和模型测试之间的数据?我肯定会为模型使用固定装置,所以我应该在运行单元测试后清除数据库吗?

谢谢!

最佳答案

VCR gem 非常适合这个。您记录连接,然后可以稍后回复。

Should I be putting everything in /test/unit/update_test.rb as a unit test?

没有。您真正构建的是集成代码,因此最好将测试代码放在 ./test/integration/(或 ./test/functional,如果您愿意)

Also how do I manage data between Unit tests and Model Tests?

如果您正在谈论构建复杂的数据模型,那么工厂对此很有帮助。

should I clear the DB after running Unit tests?

是的。事实上,您应该在每次测试之间清除数据库,因为这提供了良好的测试隔离。

关于ruby-on-rails - 在 Rails 中测试库/例程(即不是模型或 Controller )的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27672418/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com