Rng*_*Tng 4 ruby unit-testing ruby-on-rails mocha.js
我想存根只是一个特定的模式,但不是唯一的一个特定的对象,不是每个实例
例如给定具有属性'name'(字符串)和'cool'(布尔值)的类'Person'.我们有两种型号:
person_bill:
name: bill
cool: false
person_steve:
name: steve
cool: false
Run Code Online (Sandbox Code Playgroud)
现在我想要只是史蒂夫,这工作正常:
p1 = people(:person_steve)
p1.stubs(:cool? => true)
assert p1.cool? #works
Run Code Online (Sandbox Code Playgroud)
但是,如果我再次从DB加载Model,它不会:
p1 = people(:person_steve)
p1.stubs(:cool? => true)
p1 = Person.find_by_name p1.name
assert p1.cool? #fails!!
Run Code Online (Sandbox Code Playgroud)
这有效,但也影响比尔,不应该:
Person.any_instance.stubs(:cool? => true)
assert people(:person_bill).cool? #doesn't fails although it should
Run Code Online (Sandbox Code Playgroud)
那么我怎么能只是史蒂夫存根,但无论如何?是否有条件的any_instance之类的
Person.any_instance { |p| p.name == 'Steve' }.stubs(:cool? => true)
Run Code Online (Sandbox Code Playgroud)
提前致谢!
为什么不直接生成对象的方法?
Person.stubs( :find_by_name ).
returns( stub(:cool? => true) )
Run Code Online (Sandbox Code Playgroud)
我认为这是正确的(而且简单的)答案.我很确定没有像any_instance语法那样的东西.您可能会在序列语法中找到有用的东西:
你能再举一个你想要的例子吗?祝好运!
| 归档时间: |
|
| 查看次数: |
7222 次 |
| 最近记录: |