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