我有一个我正在测试的课程,称之为myfoo。它访问一个名为yourbar的类。特别喜欢这样......
yourbar_obj.projects[project_name]
在我的规范代码中,我有这个
let(:yourbar_obj) { Class.new }
我想模仿它来响应哈希属性访问。 所以我尝试了这个
expect(yourbar_obj).to receive(projects).and_return(some_obj)
但是,当我运行代码时,它说
NoMethodError: undefined method `projects' ...
是否可以模拟这样的哈希访问?相同类型的东西适用于常规方法调用。 我甚至尝试添加.with(project_name)以防万一。同样的错误。 想法?
答案 0 :(得分:1)
感谢Max的帮助。这是正确答案......
some_hash_obj[project_name] = some_obj
expect(yourbar_obj).to receive(:projects).and_return(some_hash_obj)
两个关键部分。 :在项目之前,some_hash_obj必须是哈希。我试图一次性在哈希索引处返回值(这是一个obj),但这不是它的工作原理。返回哈希值,[]将适用于它。