Почему редирект rspec не получает полный маршрут во время теста? - PullRequest
0 голосов
/ 14 октября 2010

Я пытаюсь выполнить следующую функциональную проверку контроллера.Я использую следующие

  • RSpec2
  • Rails 3
  • Shoudla
  • Мокко

Вот тест

context "POST on create should be successful" do
  before(:each) do
    Model.any_instance.expects(:save).returns(true).once
    Model.any_instance.stubs(:id).returns(1)
    post :create, :model => {}
  end

  it { should assign_to(:model).with_kind_of(Model) }
  it { should set_the_flash.to("Model was created successfully.")}
  it { should redirect_to(model_path(1))}
end

и тестируемый контроллер -

def create
  @model = Model.new(params[:model])

  if @model.save
    flash[:success] = "Model was created successfully."
  end
  respond_with @model
end

Единственный провальный тест - это третий тест, который говорит, что возвращаемый путь - "http://test.host/models" вместо" http://test.host/models/1"

Когда я запускаю приложение в браузере, я получаю правильное перенаправление.

1 Ответ

0 голосов
/ 14 октября 2010

Я думаю, что вам тоже нужно макет to_params.Используется системой маршрутов

context "POST on create should be successful" do
  before(:each) do
    Model.any_instance.expects(:save).returns(true).once
    Model.any_instance.stubs(:id).returns(1)
    Model.any_instance.stubs(:to_params).returns(1)
    post :create, :model => {}
  end

  it { should assign_to(:model).with_kind_of(Model) }
  it { should set_the_flash.to("Model was created successfully.")}
  it { should redirect_to(model_path(1))}
end
...