Использование Factory Girl с представлениями Rspec - PullRequest
2 голосов
/ 18 ноября 2011

Итак, я хочу протестировать некоторые виды, используя 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

В этом я попытался изменить render: action => 'rarationale',: id => @edition, чтобы просто визуализировать, и другие подобные настройки для действия render,Я просто понятия не имею, с чего начать factory_girl, помогло посмотреть.Любая помощь будет принята с благодарностью.

Версии:

Rails 3.0.10

RSpec 2.7

Factory_Girl 2.2

Ответы [ 2 ]

6 голосов
/ 19 ноября 2011

Я думаю, что ошибка в том, что @editions ожидает массив, поэтому вы должны написать

assign(:editions, [@edition])

или, в противном случае, если это должен быть один элемент, вы должны написать:

assign(:edition, @edition)

Во-вторых, если ваше представление не является частичным, которое ожидает переменные, вы должны просто написать

render

Вам не нужно давать действие, rspec знает, какое представление визуализировать из describe, и представление не получает никаких данных (поэтому вам не нужно устанавливать идентификатор), вам просто нужно установить переменные экземпляра правильно, используя assigns. Тестирование представления делает только рендеринг представления.

Надеюсь, это поможет.

1 голос
/ 29 ноября 2011

Теперь, когда вы получили ответ, перестаньте писать спецификации вида.Их излишне сложно писать, и они на самом деле не достаточно тестируются, чтобы их вообще стоило.Вместо этого проведите тестирование вида и контроллера с помощью Cucumber.

...