0
我是rails和rspec的新手。 我使用Rspec使用控制器存根檢查標題
RSpec的護欄3.0.0
rspec的3.0.0
紅寶石2.3.5
我寫了一個樣本控制器
class BaseClass::SampleController < ApplicationController
skip_before_filter :check_privilege
def choose
@page_title = I18n.t('BaseClass.box.chooser_title')
render :layout => false
end
end
其中
BaseClass.box.chooser_title
在配置/區域/ en.yml,它的值是「樣本標題」
我也choose.html.erb在app /視圖,它有標題樣品標題
而且我寫了一些Rspec的對於上述控制器
context "choose" do
it "renders the choose template" do
get :choose
expect(response).to render_template('choose')
end
it "page title should be Sample title " do
get :choose
BaseClass::SampleController.any_instance.stubs(:page_title).returns("Sample title")
obj = BaseClass::SampleController.new
expect(obj.page_title).to eql "Sample title"
end
我要檢查choose.html.erb的標題是「示例文本」與否。 我有兩個問題
我試着寫一個存根在第二次測試情況下,控制器, 測試案例成功運行,甚至當我改變:PAGE_TITLE一些其他的名字(這不是引用:PAGE_TITLE在BaseClass :: SampleController)爲什麼?
如果不是存根(stub),我該如何訪問spec中的page_title來檢查?
謝謝你,它的工作。抱歉再添加一個問題。在這種情況下,如果我想訪問:page_title使用存根(stub),我應該怎麼做?我只是想知道這一點,因爲我根本無法理解存根的語法。提前致謝! – Rocky29 2015-03-03 09:35:56
你並不真正使用存根來「訪問」東西,你使用它會改變某些方法返回的東西。它通常用於抽象當前測試中不想處理的應用程序的某些部分。另一方面,如果您使用「BaseClass :: SampleController.any_instance.stub」而不是「存根」來存根方法,我相信您的代碼可以工作,但我相信它仍然不是一個正確的方法。你也可能會發現這個問題很有趣http://stackoverflow.com/questions/16005281/rspec-how-to-assign-instance-variable-in-controller-spec – Dabrorius 2015-03-03 09:49:37
Thanky you @Dabrorius – Rocky29 2015-03-03 09:51:34