【问题标题】:run database with rspec-rails使用 rspec-rails 运行数据库
【发布时间】:2011-08-24 18:10:30
【问题描述】:

我正在尝试使用 RSpec 测试控制器,但遇到了问题,因为控制器中的函数需要数据库。

控制器中的代码行如下所示:

@myallresources = Myrsources.all

Myresources 只是继承自 ActiveRecord::Base

但是,因为没有数据库,所以没有什么要加载的,@myallresources 只是一个空数组,导致测试失败。有没有办法在运行 rspec 时连接到数据库?

我对 RSpec 和 rails 非常陌生,因此非常感谢任何帮助。谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby tdd controllers rspec-rails


    【解决方案1】:

    您不应该在控制器规范中使用数据库连接。

    查看此页面上关于数据库隔离的部分http://rspec.info/rails/writing/controllers.html

    基本上,您必须模拟或存根您的 ActiveRecord 模型,因为这些模型应该在模型规范中单独测试。下面是一个使用 mock_model 的简单示例:

    before do
      mocks = (1..3).map { mock_model(MyResource) }
      MyResource.should_receive(:all).and_return(mocks)
    end
    

    将它放在同一个块中,其中包含describe 定义测试使用MyResource.all 的操作。

    您可以在以下链接中找到对模拟和存根的很好解释:

    【讨论】:

      猜你喜欢
      • 2020-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-19
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2012-07-28
      相关资源
      最近更新 更多