/ / Як придумати / подвоїти наступний метод у моєму тесті rspec - ruby-on-rail, ruby

Як придушити / подвоїти наступний метод у моєму тесті rspec - ruby-on-rail, ruby

У мене є метод, який робить приблизно наступне:

def some_method(....)

user = User.where("....").first

if !user.nil?

if ..
user.delete
elsif
user.update_attributes(...)

else
new_user = User.new(...)
new_user.save!
end

end

Існує розгалуження, тому мені доведеться створити кілька тестів для кожного випадку.

Як я можу створити макети-об'єкти, щоб переконатися, що називаються певні методи?

Як я можу відрізнити різні об'єкти в моєму тесті?

наприклад,

user = User.where("....")

і

new_user = User.new("...")
new_user.save!

Я повинен якимось чином протестувати на дзвінок до де, іповернення іноді нічим, а іноді і користувацьким об'єктом. І я повинен перевірити, чи зберегти! називається і повертається істинно. А також тест на видалення на конкретний об'єкт (той, з якого ставиться).

Відповіді:

1 для відповіді № 1

Ви можете застосувати методи класу класу з RSpec, наприклад

User.should_receive(:where).and_return([])