在阅读“Antipatterns for Rails controllers”上的这篇文章之后,我对存根有疑问。代码如下:
describe "GET show" do
let(:user) { build_stubbed(User) }
let(:report) { build_stubbed(Report) }
before do
User.stub(:find) { user }
user.stub(:find_report) { report }
end
describe "GET show" do
it "finds the user's report" do
user.should_receive(:find_report) { report }
get :show, :user_id => user.id, :id => report.id
end
...
end
我的问题是......当我们执行以下操作时:
User.stub(:find) { user }
user.stub(:find_report) { report }
我想我们正在为User类和用户对象创建一个stubbed方法,并且块之间的内容是参数。
所以,我担心的是,这个'stub'方法定义在哪里?我知道build_stubbed来自FactoryGirl,但是'stub'定义在哪里?
而且,以下是做什么的:
user.should_receive(:find_report) { report }
{ report }
在做什么?
答案 0 :(得分:0)
我知道build_stubbed来自FactoryGirl,但是'stub'定义在哪里?
此处的“存根”方法由RSpec添加到每个对象,请参阅此处的文档:http://rubydoc.info/gems/rspec-mocks/frames。
{report}在做什么?
上面也记录了这一点,但是它指定了stubbed方法:find_report将返回report
,在这种情况下指的是:
let(:report) { build_stubbed(Report) }