1

对不起,如果这是一个愚蠢的问题,我是新来的嘲笑。

我可以使用 mocha 来执行以下操作:

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

如何模拟嵌套对象?

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

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

product.person.first_name

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

4

2 回答 2

2

你需要在之前定义一个 mock() 并在你打电话给产品的人时返回它


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

product.person #=> mockObject
product.person.first_name #=> david
于 2010-03-04T11:41:21.747 回答
1

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

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

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

于 2010-03-04T20:20:57.387 回答