我正在使用rspec-rails,版本1.2.6。在控制器測試爲什麼在測試控制器時無法訪問RSpec中的控制器對象?
describe WebsController do ...
我似乎沒有訪問控制器對象爲了存根方法。例如,以下將不起作用:
before :all do
@feed = mock_model(Feed)
controller.should_receive(:feed_from_params).and_return @feed
end
我得到的警告一樣
An expectation of :feed_from_params was set on nil.
,併發射了調試會話從規範只是方法模擬前告訴就行了,我得到的如下:
(rdb:1) self.respond_to? :controller
true
(rdb:1) controller
nil
從所有的例子,訪問控制器變量應該工作,但它不。是什麼賦予了?我怎樣才能在被測試的控制器中模擬或存根方法?
這樣做的原因是,前(:所有)塊在系統啓動時運行_once_,而前()(這是一個真正的前(:each))塊在每次測試之前運行,並且在_after_之前發生(:each)在外部上下文中定義的塊。 – 2009-06-12 15:51:35