编写规范以断言某条记录已被删除

时间:2013-12-14 05:34:16

标签: ruby-on-rails rspec

计算实例数是找出某些是否已被删除的一种方法:

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

但是,是否可以测试某条记录是否已被删除?就我而言,@ friendship_1?我可以测试数据库中不再存在@ friendship_1的属性吗?

3 个答案:

答案 0 :(得分:1)

使用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

答案 1 :(得分:0)

也许你可以reload记录并测试它会引发错误:

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

答案 2 :(得分:0)

ActiveRecord#exists? method允许您测试数据库中是否存在记录。您可以测试您想要的任何条件,但假设对id的测试已经足够,您可以使用:

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

顺便说一句,我为此方法找到的所有文档都表明它返回truefalse,但它确实应该说truthy或'falsy`,每个{ {3}}由于我无法弄清楚的原因,它没有反映在主分支中。