Ruby 摩卡和嵌套对象

Ruby 摩卡和嵌套对象,ruby,testing,mocking,stubbing,ruby-mocha,Ruby,Testing,Mocking,Stubbing,Ruby Mocha,如果这是一个愚蠢的问题,请原谅,我对嘲弄还不熟悉 我可以用摩卡咖啡做以下事情: person.expects(:first_name).returns('David') 如何模拟嵌套对象 假设我有一个属于某个人的产品,我想知道这个人的名字 在我的应用程序中,我可能会这样做: product.person.first_name 如何使用mock获得相同的结果?您需要在调用产品上的person之前定义mock()并返回它 person = mock(:first_name => 'david'

如果这是一个愚蠢的问题,请原谅,我对嘲弄还不熟悉

我可以用摩卡咖啡做以下事情:

person.expects(:first_name).returns('David')
如何模拟嵌套对象

假设我有一个属于某个人的产品,我想知道这个人的名字

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

product.person.first_name
如何使用mock获得相同的结果?

您需要在调用产品上的person之前定义mock()并返回它


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

product.person #=> mockObject
product.person.first_name #=> david

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

记录在:

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