gpt4 book ai didi

ruby-on-rails - Rails 测试和 Mocha : How to stub specific model - conditional any_instance?

转载 作者:数据小太阳 更新时间:2023-10-29 07:27:48 25 4
gpt4 key购买 nike

我只想 stub 一个特定模型,但不是一个特定对象,不是每个实例

例如给定具有属性“name”(字符串)和“cool”( bool 值)的类“Person”。我们有两种模型:

person_bill:
name: bill
cool: false

person_steve:
name: steve
cool: false

现在我只想 stub steve,它工作正常:

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

但是如果我再次从数据库加载模型,它不会:

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

所以我怎么能只是史蒂夫 stub ,但无论如何?有条件的any_instance吗

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

提前致谢!

最佳答案

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

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

我认为这是正确(且简单)的答案。我很确定没有什么比得上你的 any_instance 语法了。您可能会在序列语法中发现一些有用的东西:

您能否再举一个例子说明您要查找的内容?祝你好运!

关于ruby-on-rails - Rails 测试和 Mocha : How to stub specific model - conditional any_instance?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1600838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com