检查.empty?销毁后不工作
Checking .empty? after destroy not working
我编写了一个测试来检查来自同一公司内用户的推荐。在断言中,我检查引用是否为空,然后 运行 destroy_referrals 方法,最后检查引用是否为空。 assert referrals.empty?
返回失败,
1) Failure:
CompanyTest#test_destroy_referrals_with_referrals [test/models/company_test.rb:634]:
Expected false to be truthy.
company_test.rb
def test_destroy_referrals_with_referrals
company = companies(:default)
referrals = company.users.map {|u| u.referrals unless u.referrals.empty?}.uniq.compact
assert !referrals.empty?
company.destroy_referrals
assert referrals.empty?
end
我原以为最后一个断言会确认引用已被删除。知道为什么会失败吗?
问题是你提前准备好了推荐人,从来没有改过。要使测试通过,您应该重新加载它们:
def test_destroy_referrals_with_referrals
company = companies(:default)
referrals = -> { company.users.map(&:referrals).reject(&:empty?) }
assert !referrals.().empty?
company.destroy_referrals
assert referrals.().empty?
end
Referrals 是一个数组对象。你加载它一次,它就留在内存中。为什么您希望它发生变化?
重新阅读。
referrals = company.users.map {|u| u.referrals unless u.referrals.empty?}.uniq.compact
assert !referrals.empty?
company.destroy_referrals
company.reload # just for good measure
referrals = company.users.map {|u| u.referrals unless u.referrals.empty?}.uniq.compact
assert referrals.empty?
我编写了一个测试来检查来自同一公司内用户的推荐。在断言中,我检查引用是否为空,然后 运行 destroy_referrals 方法,最后检查引用是否为空。 assert referrals.empty?
返回失败,
1) Failure:
CompanyTest#test_destroy_referrals_with_referrals [test/models/company_test.rb:634]:
Expected false to be truthy.
company_test.rb
def test_destroy_referrals_with_referrals
company = companies(:default)
referrals = company.users.map {|u| u.referrals unless u.referrals.empty?}.uniq.compact
assert !referrals.empty?
company.destroy_referrals
assert referrals.empty?
end
我原以为最后一个断言会确认引用已被删除。知道为什么会失败吗?
问题是你提前准备好了推荐人,从来没有改过。要使测试通过,您应该重新加载它们:
def test_destroy_referrals_with_referrals
company = companies(:default)
referrals = -> { company.users.map(&:referrals).reject(&:empty?) }
assert !referrals.().empty?
company.destroy_referrals
assert referrals.().empty?
end
Referrals 是一个数组对象。你加载它一次,它就留在内存中。为什么您希望它发生变化?
重新阅读。
referrals = company.users.map {|u| u.referrals unless u.referrals.empty?}.uniq.compact
assert !referrals.empty?
company.destroy_referrals
company.reload # just for good measure
referrals = company.users.map {|u| u.referrals unless u.referrals.empty?}.uniq.compact
assert referrals.empty?