摩卡和嵌套对象

如果这是一个愚蠢的问题,我很嘲笑。

我可以用mocha做以下事情:

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

如何模拟嵌套对象?

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

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

 product.person.first_name 

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

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

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

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

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

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