使用具有Rspec视图的Factory Girl

时间:2011-11-18 19:22:11

标签: ruby-on-rails rspec factory-bot rspec-rails

所以我想使用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 => '理由',:id => @edition只是渲染,以及其他类似的调整渲染动作。我只是不知道从哪里开始一个factory_girl帮助查看。任何帮助将不胜感激。

版本:

Rails 3.0.10

RSpec 2.7

Factory_Girl 2.2

2 个答案:

答案 0 :(得分:6)

我认为错误是@editions期待一个数组,所以你应该写

assign(:editions, [@edition])

或者,如果它应该是单个元素,你应该写:

assign(:edition, @edition)

其次,除非你的视图是部分期望变量,否则你应该写

render

您不必提供操作,rspec知道要从describe呈现哪个视图,并且视图不会检索任何数据(因此您不必设置ID),只需使用assigns正确设置实例变量。测试视图只不过是渲染视图。

希望这有帮助。

答案 1 :(得分:1)

现在您已经得到了答案,请停止编写视图规范。他们不必要地写作,他们真的没有足够的测试,完全没有价值。用Cucumber进行视图和控制器测试。