【问题标题】:mocha and nested objectsmocha 和嵌套对象
【发布时间】:2010-03-04 11:23:06
【问题描述】:

请问这是一个愚蠢的问题,我是新手。

我可以使用 mocha 来做以下事情:

person.expects(:first_name).returns('David')

如何模拟嵌套对象?

假设我有一个属于某个人的产品,我想获取那个人的名字。

在我的应用中,我可能会这样做:

product.person.first_name

如何使用模拟获得相同的结果?

【问题讨论】:

    标签: ruby testing mocking stubbing ruby-mocha


    【解决方案1】:

    你需要在之前定义一个 mock() 并在你在产品上调用 person 时返回它

    
    person = mock(:first_name => 'david')
    product.expects(:person).return(person)
    
    product.person #=> mockObject
    product.person.first_name #=> david
    

    【讨论】:

      【解决方案2】:

      作为 shingara 答案的替代方案,您可以使用 mocha 的 any_instance 方法“它将检测对类的任何实例的调用”。

      Person.any_instance.expects(:first_name).returns('david')
      

      记录在:
      http://mocha.rubyforge.org/classes/Mocha/ClassMethods.html#M000001

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-21
        • 2011-01-26
        • 2013-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        相关资源
        最近更新 更多