我是rails和rspec的新手。 我正在使用
rspec-rails 3.0.0
rspec 3.0.0
ruby 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
在config / locale / en.yml中,它的值是“sample title”
我也在app / view中选择了..html,它有标题样本标题
我为上面的控制器写了一些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更改为其他名称(它不引用:BaseClass :: SampleController中的page_title),测试用例也能成功运行,为什么?
如果不是存根,如何在规范中访问page_title进行检查?
答案 0 :(得分:1)
如果你只是想检查标题,你真的不需要存根。试试这个:
it "page title should be Sample title " do
get :choose
expect(assigns(:page_title)).to eq "Sample title"
end
您可以详细了解此方法here