Использование RSpec 2 для просмотра спецификаций - PullRequest
5 голосов
/ 11 августа 2011

Мне кажется, что я упускаю что-то довольно простое, но я тоже не могу этого понять.

При выполнении следующей спецификации:

require 'spec_helper'

describe "/mymodel/show.html.erb" do
  before(:each) do
    @mymodel = Factory(:mymodel)
    @user = Factory(:user)
    assign(:web_tip, @mymodel)
    assign(:current_user, @user)
  end

  it "renders attributes in <p>" do
    render
    rendered.should have_text(/somevalue/)
  end
end

Я получаюошибка в том, что локальная переменная current_user не определена (компоновщик представления хочет вызвать ее, чтобы показать текущее состояние входа в систему).

Я на Rails 3, Rspec 2.6.4, и подумал, что я следую за текущимправильно документы.

Ответы [ 3 ]

7 голосов
/ 27 июля 2012

Это старый, но ради Google:

assign создает только переменные экземпляра. Однако current_user является вспомогательным методом (или локальной переменной). Предполагая, что вы не полностью полагаетесь на тестирование представлений, вы можете использовать следующий блок before для его работы:

before(:each) do
  view.stub(:current_user) { User.new }
end
1 голос
/ 18 августа 2011

что сработало для меня (с похожей проблемой) было что-то вроде:

@controller.stub(:current_user) { @user }

Мне кажется, проблема в том, что текущий пользователь не является назначением (переменной экземпляра), это значение в session.

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

0 голосов
/ 14 августа 2011

Ну, я так и не понял, как заставить authlogic работать с этим, поэтому я включил метод current_user в сами тесты, чтобы заставить его работать.

def current_user
   Factory(:user)
end

Сработало, хотя я все равно наградил бы "ответом", если кто-то может помочь мне сделать правильный путь.

...