Rspec 如何测试定制的Padrino FormBuilder?
假设我们在Padrino中有一个自定义FormBuilder,如下所示:Rspec 如何测试定制的Padrino FormBuilder?,rspec,padrino,Rspec,Padrino,假设我们在Padrino中有一个自定义FormBuilder,如下所示: class CustomFormBuilder < Padrino::Helpers::FormBuilder::AbstractFormBuilder def foo(arg1, arg2, ...) # do something with #template end end 我不清楚如何做到这一点: 通常框架会实例化FormBuilder,所以我在这里这么做感觉不对。有更好的方法吗 我不知道如
class CustomFormBuilder < Padrino::Helpers::FormBuilder::AbstractFormBuilder
def foo(arg1, arg2, ...)
# do something with #template
end
end
我不清楚如何做到这一点:
- 通常框架会实例化FormBuilder,所以我在这里这么做感觉不对。有更好的方法吗
- 我不知道如何传递FormBuilder将接受为模板的对象
- 我不知道如何获得渲染模板的结果
测试这个的正确方法是什么?经过一番努力,我发现了这个问题。其思想是创建一个表示模板的对象,将其传递给FormBuilder,为模型创建另一个对象,然后查看生成器是否生成正确的HTML
描述CustomFormBuilder所做的
让(:模板)做
新办的
包括Padrino::Helpers::OutputhHelpers
包括Padrino::Helpers::FormHelpers
包括Padrino::Helpers::TagHelpers
完.新
终止
它“让一个班级”做什么
model=Class.new{include ActiveModel::model}.new
builder=已描述\u类。新模板,模型
expect(builder.helper\u方法:foo)。包括'class=“expected class”'
#或者,如果您正在使用rspec html匹配器或类似的东西。。。
expect(builder.helper_方法:foo).to\
have_标记('div',:with=>{:class=>'bar'})
终止
终止
describe CustomFormBuilder do
it "renders the right output"
# ...
result = CustomFormBuilder.new(...).template.render
expect(result).to include 'expected-content'
end
end