Rspec не подведет этот тривиальный код, хотя он должен - PullRequest
2 голосов
/ 13 сентября 2011

Контроллер:

class FooController < ApplicationController
  def create
  end
end

Спецификация контроллера:

describe FooController
  it "does bar" do
    Foo.should_receive(:new).with("text" => "Lorem ipsum")
    post :create, foo: { "text" => "Lorem ipsum" }
  end
end

Когда я запускаю это, rspec говорит, что это успех.Однако Foo.new никогда не вызывается в методе create.Однако, если я изменю Lorem ipsum в вызове функции post на что-то другое, произойдет сбой.Я ожидаю, что это не удастся, и получится, если я добавлю Foo.new(params[:foo]) в тело метода create.Почему это не так?

1 Ответ

2 голосов
/ 12 декабря 2011

Похоже, вам не хватает "do" в блоке description. Попробуйте:

describe FooController do
  it "does bar" do
    Foo.should_receive(:new).with("text" => "Lorem ipsum")
    post :create, foo: { "text" => "Lorem ipsum" }
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...