1

我正在尝试使用 mongomapper 在 rails 2.3.5 应用程序上实现 shoulda 单元测试。

到目前为止,我已经:

  1. 配置了一个使用 mongomapper 的 rails 应用程序(该应用程序有效)
  2. 将 shoulda 添加到我的 gems 中,并使用rake gems:install
  3. 添加config.frameworks -= [ :active_record, :active_resource]config/environment.rb所以ActiveRecord不使用。

我的模型如下所示:

class Account
  include MongoMapper::Document

  key :name, String, :required => true
  key :description, String
  key :company_id, ObjectId
  key :_type, String

  belongs_to :company
  many :operations

end

我对该模型的测试是这个:

class AccountTest < Test::Unit::TestCase

  should_belong_to :company
  should_have_many :operations

  should_validate_presence_of :name

end

它在第一个失败should_belong_to

./test/unit/account_test.rb:3: undefined method `should_belong_to' for AccountTest:Class (NoMethodError)

任何想法为什么这不起作用?我应该尝试与应该不同的东西吗?

我必须指出,这是我第一次尝试使用 shoulda,而且我对测试本身还是很陌生。

4

1 回答 1

2

在更深入地学习之后,我意识到出了什么问题。

Shoulda 的宏 ( should_belong_to, should_have_many, should_validate_presence_of) 仅适用于 ActiveRecord - 毕竟它们是在Shoulda::ActiveRecord::Macros上定义的。

如果我要使用这些,我将不得不为 Shoulda::MongoMapper::Macros 实现宏。我不确定这是否值得。

我希望这可以帮助任何人找到这篇文章。

于 2010-06-02T18:02:04.650 回答