我有一个具有多态关联的模型,我正在运行rspecs。 测试要求多态字段指向具有某些字段的模型(例如名称)。
由于我不想使用任何现有的(和复杂的)模型,我想以某种方式创建一个新的简单模型(只存在于测试中),我的主要模型可以指出。
有办法做到这一点吗? 当模型依赖于其他模型时,还有其他任何方法来测试模型吗?
答案 0 :(得分:0)
正如您所料,测试应该是独立的。
这是存在存根和模拟的地方,它是Rails的继续进行方式。
如果你想创建一个专用于测试的模块(这是一种过度杀戮导致它是存根的作用),只需提醒ruby类和模块是可执行的。
所以你可以这样做:
if Rails.env.test?
module Foo
...
end
end
答案 1 :(得分:0)
问题解决了 - 使用'mocha'宝石。
class Comment < ActiveRecord::Base
belongs_to :commentable, :polymorphic => true
end
在测试中,可以这样做:
class MockUser {
# Stuff
}
comment = Comment.create!.expects('commentable').returns(MockUser.new)
现在它将起作用:
comment.commentable.name