【问题标题】:Changes in Rails fixtures are not propagated through to associationsRails 固定装置中的更改不会传播到关联
【发布时间】:2015-08-06 21:29:38
【问题描述】:

在 Rails 4.2.1 中,我有一个 Book 模型。我也有BookAclmodel,belongs_toBook。在我的测试中,我通过tests/fixtures 中定义的固定装置加载两者。在我的测试中,在setup 中,我根据fixture 数据实例化了两个对象。到目前为止,一切正常。

在我的测试中,我修改了 BookAcl 对象,并希望在通过 Book 对象访问同一个 BookAcl 时反映这些更改。然而,这并没有发生。事实上,当我(通过 Pry)查看 BookAcl 对象时,其属性与 Book.BookAcl 对象不同,尽管该对象的其余部分是相同的。

我做错了什么?我如何强制这些更改通过对象图传播?

【问题讨论】:

    标签: ruby-on-rails ruby testing fixtures


    【解决方案1】:

    致电#reload。当前版本的 Rails 中没有 Identity Map(他们认为它产生了太多错误),因此您应该在 DB 记录更改时通过调用 #reload 手动重新获取所有对象。

    【讨论】:

    • 嗯,谢谢。那么在测试中验证事物的正确方法是什么?每次预期对象更改后重新获取?总...
    • 好吧,在您需要在测试/规范中检查对象后,#reload 是正确的。如果您确实在单个测试用例中多次重复更改检查周期,那么您可能会受益于将测试拆分为更小的部分(将单个测试用例拆分为多个测试用例)。
    猜你喜欢
    • 2010-10-20
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    相关资源
    最近更新 更多