У мене є метод, який робить приблизно наступне:
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([])