创建第一个gem,取决于activerecord,我的测试是否会击中db?

时间:2012-09-26 19:28:04

标签: mysql ruby activerecord

我正在创建一个gem,我的类initialize方法将ActiveRecord模型作为参数。

这不是与铁轨相关的宝石。

在我的单元测试(rspec)中,我应该如何创建连接到mysql的单元测试?

我觉得很奇怪,我必须创建一个database.yml文件,然后将我的凭证等用于单元测试。

我应该使用sqlite吗?

如果有人可以提供一个如何做到这一点的例子那么棒。

1 个答案:

答案 0 :(得分:1)

我认为您不需要ActiveRecord对象,甚至会转发您收到的对象继承自ActiveRecord :: Base。

相反,IMO会更好的是使用模拟的ActiveRecord :: Base对象。通过使用模拟对象而不是所需的原始对象,您可以模拟active_record对象的任何行为和状态,并且您的测试不需要数据库连接,这将使它们更快地运行。

您可以在这里阅读更多关于模拟(理论)的内容: http://en.wikipedia.org/wiki/Mock_object

练习(使用rspec): http://rubydoc.info/gems/rspec-mocks/frames

希望它有所帮助!