如何在rails集成测试期间或之后检查数据库的内容

时间:2015-06-12 22:34:55

标签: ruby-on-rails ruby database integration examine

我是一个相当有经验的开发者,但我是一个完整的网络和铁杆新手。我正在尝试实现一种市场轨道应用程序。我已经将应用程序开发到了我在客户交互流程中所处的位置,现在我意识到我需要自动化东西导致开发/测试通过浏览器消耗这么多时间。

假设我的客户互动流程从第A页开始,然后到第B,C,D ...... G页。现在我正在开发'H'页面。我知道我可以使用自动化测试设备(例如Minitest)来自动完成整个过程。但就像我仍然使用导轨训练轮一样,有时候我喜欢看到数据库状态从一个状态到另一个状态的进展,而不是仅仅相信测试自动化确实在做我期待的事情。

我的问题是,有没有办法让Minitest自动化/模拟来自A的用户交互流程 - > G然后让我从那里手动接管,这样我可以点击我新开发的浏览器按钮,同时使用我的数据库浏览器来适当地观察数据库状态进度?

如果不是 - 我正在猜测 - 我很乐意在集成测试后找到检查数据库内容的方法。我的集成测试工作正常。只是在他们完成之后,我希望能够弹出我的数据库浏览器并进行调查,验证各种值,以确保我满意的数据库中的内容是应该的。

另一个可能对我有用的解决方案是,如果我的集成测试中有某些内容可以访问db值,那么我可以通过编程方式验证。我想到了assigns give you access to instance variables within your integration tests之类的东西,然后你可以“断言”调用。

当然,如果我偏离轨道,请告诉我,对于我错过的这类事情,我有一个“最佳实践”。

我正在使用Rails 4.2.0和Ruby 2.2.2p95

1 个答案:

答案 0 :(得分:0)

尽管Minitest没有办法执行您提到的第一个选项,但您可以将Watir签出作为(部分)自动化测试的一种方式,这样您就可以在浏览器仍处于打开状态的某个时刻离开在观察数据库中发生的事情时手动继续。

但是,由于您提到的第二个选项可以使用Minitest(并且通过完全自动化可以节省更多时间)我强烈推荐它。有关一些示例,请参阅Ruby on Rails Tutorial 3rd Edition by Michael Hartl(您可能会发现整个内容非常有用,但这里有一个显示测试的部分,与您正在寻找的内容非常相似:Section 7.4.4。)