我正在创建一个 gem,我的类初始化方法将 ActiveRecord 模型作为参数。
这不是与 Rails 相关的宝石。
在我的单元测试(rspec)中,我应该如何创建一个连接到 mysql 的单元测试?
我觉得很奇怪我必须创建一个 database.yml 文件,然后将我的凭据等用于单元测试。
我应该改用 sqlite 吗?
如果有人可以提供一个我应该如何做到这一点的例子,那就太好了。
我正在创建一个 gem,我的类初始化方法将 ActiveRecord 模型作为参数。
这不是与 Rails 相关的宝石。
在我的单元测试(rspec)中,我应该如何创建一个连接到 mysql 的单元测试?
我觉得很奇怪我必须创建一个 database.yml 文件,然后将我的凭据等用于单元测试。
我应该改用 sqlite 吗?
如果有人可以提供一个我应该如何做到这一点的例子,那就太好了。
我认为您不需要 ActiveRecord 对象,甚至中继您收到的对象继承自 ActiveRecord::Base。
相反,IMO 会更好的是使用模拟的 ActiveRecord::Base 对象。通过使用模拟对象而不是所需的原始对象,您可以模拟 active_record 对象的任何行为和状态,并且您的测试不需要数据库连接,这将使它们运行得更快。
您可以在这里阅读更多关于模拟(理论)的信息: http ://en.wikipedia.org/wiki/Mock_object
在此处练习(使用 rspec): http ://rubydoc.info/gems/rspec-mocks/frames
希望能帮助到你!