Поэтому я пытаюсь убедиться, что при сохранении происходит обратный вызов ... Мой тест:
user = create_user
login user
visit new_post_path
fill_in "post_title", :with => "my post"
user.expects(:publish_post!).once
click_button "post_submit"
и я получаю:
1) Отказ:
test: пост должен размещать пост. (Послетестовый)
[тест / интеграция / post_test.rb: 72: в __bind_1311708168_640179'
/test/test_helper.rb:37:in
ожидание_ на '
тест / интеграция / post_test.rb: 70: в `__bind_1311708168_640179 ']:
не все ожидания оправдались
неудовлетворенные ожидания:
- ожидается ровно один раз, еще не вызвано: # .publish_post! (any_parameters)
оправданные ожидания:
- разрешено любое количество раз, еще не вызвано: Post (id: целое число, title: string, method_of_exchange: строка, you_tube_url: строка, lat: десятичное число, lng: десятичное число, bounty: целое число, расстояние: integer, user_id: целое число, рассмотреть_схожие_фференты : логическое, описание: текст, create_at: datetime, updated_at: datetime, адрес: строка, город: строка, состояние: строка, zip: строка, страна: строка, county: строка, category_id: целое число, slug: строка, статус: строка , популярность: целое число, дельта: логическое значение, share_count: целое число, needs_reply: десятичное число, needs_offer: десятичное число, район: строка) .facets (any_parameters)
- разрешено любое количество раз, еще не вызвано: {} .for (any_parameters)
- ожидается никогда, еще не вызвано: # .publish_post! (any_parameters)
Тем не менее, моя модель сообщения:
class Post < ActiveRecord::Base
belongs_to :user
after_create :publish
def publish
user.publish_post!
end
end
и действие создания моего контроллера сообщений действительно назначает пользователю сообщение ...
class PostsController < ApplicationController
def create
post = Post.new(params[:post])
post.user = current_user
post.save
end
end
...
Функциональность отлично работает при тестировании вручную .. Так что я не понимаю, почему это не работает при автоматизации?