Rails Test&摩卡:如何存根特定模型 - 条件any_instance?

时间:2009-10-21 13:26:28

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

我想只存储一个特定模型,但只是一个特定的对象而不是每个实例

E.g。给定类'Person',其属性为'name'(字符串)和'cool'(布尔值)。我们有两种模式:

person_bill:
   name: bill
   cool: false

person_steve:
   name: steve
   cool: false

现在我想把史蒂夫刚刚存下来,这很正常:

p1 = people(:person_steve)
p1.stubs(:cool? => true)
assert p1.cool? #works

但如果我再次从DB加载Model,则不会:

p1 = people(:person_steve)
p1.stubs(:cool? => true)
p1 = Person.find_by_name p1.name
assert p1.cool? #fails!!

这有效,但也会影响 Bill ,但不应该:

 Person.any_instance.stubs(:cool? => true)
 assert people(:person_bill).cool? #doesn't fails although it should

那么我怎么能只是史蒂夫存根,但无论如何?是否有条件的any_instance,如

 Person.any_instance { |p| p.name == 'Steve' }.stubs(:cool? => true)

提前致谢!

1 个答案:

答案 0 :(得分:7)

为什么不直接生成对象的方法?

Person.stubs( :find_by_name ).
       returns( stub(:cool? => true) )

我认为这是正确(简单)的答案。我很确定没有像any_instance语法那样的东西。您可能会在序列语法中找到有用的东西:

你能举一个你想要的例子吗?祝你好运!