【问题标题】:Rspec-rails doesn't seem to find my modelsRspec-rails 似乎找不到我的模型
【发布时间】:2010-04-26 07:23:39
【问题描述】:

我正在尝试 rspec,当它似乎没有加载我知道存在的数据库记录时,它立即碰壁。这是我相当简单的规范(还没有测试)。

require File.expand_path(File.dirname(__FILE__) + '../spec_helper')

describe SomeModel do

  before :each do
    @user1 = User.find(1)
    @user2 = User.find(2)
  end

  it "should do something fancy"
end

我收到ActiveRecord::RecordNotFound 异常,说它找不到 ID=1 或 ID=2 的用户,我知道这是存在的。我将测试和开发数据库都设置为指向 database.yml 中的相同模式,所以这不应该是数据库混淆。在安装 gems(rspec、rspec-rails)和 gem.config 之后,我还运行了 script/generate rspec,包括 environment.rb 和 test.rb。知道我错过了什么吗?谢谢。

编辑

似乎我正在使用rake spec:models 运行测试,这清空了数据库,因此没有找到任何记录。当我使用% spec spec/models/some_model_spec.rb 时,一切正常。

【问题讨论】:

  • 嗯,RSpec 不希望设置固定装置吗?我也有 rspec_model 生成器,但我不知道你在做什么是否需要这些生成器
  • 可能是,我会检查一下 - 谢谢。

标签: ruby-on-rails unit-testing rspec


【解决方案1】:

您不应该依赖测试数据存在于您的数据库中,因为它可能(而且经常发生!)发生变化。其次,您不应该在同一个数据库中加入您的测试和开发数据库。测试应该在纯数据库上运行,而不是被你的开发破坏的数据库。

您应该做的是以夹具的形式专门为测试设置数据,或者使用诸如factory_girl 或machinist 之类的工具。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多