Ошибка проверки в тесте, но массив ошибок пуст - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть этот код для создания темы и публикации в приложении форума в Rails 3.1:

def create
  @topic = Topic.new(:name => params[:topic][:name], :last_post_at => Time.now)
  @topic.forum_id = params[:topic][:forum_id]
  @topic.user = current_user

  if @topic.save
    @post = Post.new(:content => params[:post][:content])
    @post.topic = @topic
    @post.user = current_user

    @post.save!
    ...

При публикации в методе create через соответствующую форму тема и сообщение создаютсяи оба save вызова успешны.

Когда я вызываю метод create с помощью функционального теста, тема сохраняется, но в сообщении есть ошибки проверки.

ActiveRecord::RecordInvalid: Validation failed: 
app/controllers/topics_controller.rb:23:in `create'
test/functional/topics_controller_test.rb:26:in `block in <class:TopicsControllerTest>'

Тествыглядит следующим образом:

test "should create topic" do
  post :create, :topic => {:name => "New topic", :forum_id => forums(:one).id}, :post => {:content => "Post content"}
end

(current_user регистрируется с помощью метода установки.)

Когда я отображаю ошибки объекта post через отладчик или с помощью @post.errors.full_messages,массив ошибок пуст.

Модель Post выглядит следующим образом:

class Post < ActiveRecord::Base
  attr_accessible :content

  belongs_to :topic
  belongs_to :user
end

И модель Topic:

class Topic < ActiveRecord::Base
  belongs_to :user
  belongs_to :last_poster, class_name: 'User'

  attr_accessible :name, :last_poster_id, :last_post_at

  belongs_to :forum
  has_many :posts, :dependent => :destroy
end

Как найтичто вызывает ошибку проверки?

1 Ответ

0 голосов
/ 08 февраля 2012

Проблема заключалась в том, что я использовал мокко Post.any_instance.stubs(:valid?).returns(false) в тесте, который выполнялся до моего неудачного теста.

По-видимому, вам нужно восстановить исходное поведение, прежде чем продолжить выполнение других тестов, вызвав Post.any_instance.unstub(:valid?).

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