我创建了一个简单的Rspec测试来验证创建的模型是否已被删除。然而,测试失败,因为模型仍然存在。有人能提供任何帮助来确定记录是否真的被删除了吗?
RSpec.describe Person, type: :model do
let(:person) {
Person.create(
name: "Adam",
serial_number: "1"
)
}
it "destroys associated relationships when person destroyed" do
person.destroy
expect(person).to be_empty()
end
end
3条答案
按热度按时间2mbi3lxu1#
你有两个选择。你可以测试一下:
1.从数据库中删除了一条记录
但这并不能告诉你哪个记录被删除了。
1.或者确切的记录不再存在于数据库中
或
但这并不能确保记录以前就存在。
两者的组合可以是:
svgewumm2#
我认为下面是一个很好的方法来测试一个特定的记录已经被删除了一个期望,同时确保你测试的结果的行动,而不仅仅是你的测试对象的状态。
dl5txlt93#
当你从数据库中删除一条记录时,一个对象仍然存在于内存中,这就是为什么
expect(person).to be_empty()
失败的原因。RSpec有
change
匹配器。ActiveRecord有persisted?
方法。如果记录没有持久化在数据库中,则返回false。destroy
是一个框架的方法,据我所知,你不需要测试它的方法。