Помогите понять этот тест RSpec - PullRequest
0 голосов
/ 16 апреля 2011

Я пытаюсь подтвердить свое понимание того, почему это на самом деле работает. Моё приложение является просто скаффолдом по умолчанию для целей этого эксперимента.

it "creates a record and redirects with success notice" do
    Project.any_instance.stubs(:valid?).returns(true)   #ensure action behaves as if @project was valid
    post :create, :format => :js
    assigns(:project).errors.should be_empty    #ensures that @project has no errors
    flash[:notice].should_not be_nil            #ensure a flash notice is set
    response.should redirect_to(projects_path)  #ensure appropriate redirection
  end

end

В контроллере метод save вызывается для @проект.Вот где я неуверен.Объект сохранится, потому что действительный?Метод был заглушен, чтобы вернуть true, даже если объект недействителен.Но если объект недействителен, как сохранение может быть успешным?

1 Ответ

0 голосов
/ 16 апреля 2011

Rails также вызывает вашу заглушку valid? перед сохранением, поэтому она выполняет сохранение как обычно, потому что считает, что все в порядке.

С другой стороны, если у вас есть, скажем, индекс UNIQUE для поля в базе данных MySQL, дублирующаяся строка может помешать сохранению записи, даже если вы указали valid?. Два возможных уровня проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...