Как метод Rspec для объекта в обратном вызове другого объекта - PullRequest
0 голосов
/ 23 мая 2018

У меня есть класс с именем User с определением.(Упрощенная версия для понимания и хранения всего кода в одном месте)

class User
  string type
  bool create_copy
end

after_save copy_cat
after_destroy destroy_copy_cat

def copy_cat
 if create_copy?
  User.create!(type: type, create_copy: false)
 end
end

def destroy_copy_cat
 if create_copy?
  User.where(type: self.type).destroy_all
 end
end

#RSPEC
#Test case 1
user = User.new(type: :admin, create_copy: true)
expect(user).to receive(copy_cat) . #Works fine
user.save!

#Test case 2
cc_user = User.where(type: :admin, create_copy: false).first
expect(user).to receive(destroy_copy_cat) #Works fine
expect(cc_user).to receive(destroy_copy_cat) #Doesn't work
user.destroy!

Есть ли способ обнаружить вызов функции для объекта cc_user в rspec?

Я проверил, что функция destroy_copy_cat вызывается после того, какс помощью оператора put.

Я попытался использовать test double и spy, и проверка завершилась неудачей.

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