Напишите спецификацию, чтобы утверждать, что определенная запись была удалена

Подсчет количества экземпляров - это один из способов узнать, было ли что-то удалено:

it "should delete the mutual_friendship" do
 @friendship_1.delete_mutual_friendship!
 UserFriendship.count.should == 0
end

Однако можно ли проверить, что определенная запись была удалена? В моем случае, @friendship_1? Могу ли я проверить, что атрибуты @friendship_1 больше не существуют в базе данных?

3 ответа

Использовать destroyed? :

it "should delete the mutual_friendship" do
 @friendship_1.delete_mutual_friendship!
 @friendship_1.should be_destroyed
 # @friendship_2.should be_destroyed
end

Документация: destroyed


ActiveRecord # существует? метод позволяет проверить наличие записи в базе данных. Вы можете протестировать любые условия, которые вы хотите, но при условии, что тестирование для идентификатора достаточно, вы можете использовать:

it "should delete the mutual_friendship" do
 @friendship_1.delete_mutual_friendship!
 expect(UserFriendship.exists?(@friendship.id)).to be_false
end

Как и в стороне, вся документация, которую я нашел для этого метода, указывает, что она возвращает true или false, но она действительно должна сказать truthy или "ложную", за эту фиксацию, которая по причинам, которые я не могу понять, не отражается в основной ветке.


Возможно, вы можете reload запись и проверить, что она вызовет ошибку:

it "should delete the mutual_friendship" do
 @friendship_1.delete_mutual_friendship!
 @friendship_1.reload.should raise_error
end

licensed under cc by-sa 3.0 with attribution.