使用具有Rspec视图的Factory Girl
所以我想使用Rspec和Factory Girl测试一些视图,但我不知道如何正确地将工厂分配给视图。 我在网上看到的所有信息都使用了存根,虽然存根很好,但我想保持我的rspec内容有些一致。
我想使用工厂作为版本模型,并在渲染页面时将其与页面关联,但我考虑过的所有内容似乎都被打破了。 这是一个荒谬的例子:
require 'spec_helper' describe "catalog/editions/rationale.html.haml" do before do @edition = Factory.create(:edition) assign(:editions, @edition) render :action => 'rationale', :id => @edition end context "GET rationale" do it "should not have the preamble to the United States constitution" do rendered.should_not contain(/We the People of the United States/) end end end
在这里我尝试改变渲染:action =>’rationale’,:id => @edition来渲染,以及对渲染动作的其他类似调整。 我只是不知道从哪里开始一个factory_girl帮助查看。 任何帮助将不胜感激。
版本:
Rails 3.0.10
RSpec 2.7
Factory_Girl 2.2
我认为错误是@editions
期待一个数组,所以你应该写
assign(:editions, [@edition])
或者,如果它应该是单个元素,你应该写:
assign(:edition, @edition)
其次,除非你的视图是一个需要变量的部分,否则你应该写
render
您不必给出操作,rspec知道要从describe
呈现哪个视图,并且视图不检索任何数据(因此您不必设置id),您只需使用正确设置实例变量assigns
。 测试视图只不过是渲染视图。
希望这可以帮助。
现在您已经得到了答案,请停止编写视图规范。 他们不必要地写作,他们真的没有足够的测试,完全没有价值。 用Cucumber进行视图和控制器测试。
- FactoryGirl创建了不完整的模型
- Factory_girl与validates_presence_of有__的关系
- 如何在工厂中使用’sequence’来避免使用’FactoryGirl.reload’?
- 使用FactoryGirl时,Paperclip :: Attachment作为字符串传递
- Factory Girl / Capybara从数据库测试中删除记录?
- 使用OmniAuth在Factory Girl中创建用户?
- 如何从引擎中使用FactoryGirl工厂
- RSpec和Factory用于测试下一个,prev记录
- 工厂女孩“捆绑安装”期间的“无效的gemspec”消息(rails 3.1和ruby 1.9.2p290)