【问题标题】:Fixture associations failing in mailer test夹具关联在邮件测试中失败
【发布时间】:2015-07-06 21:43:27
【问题描述】:

邀请与组织 (many:1) 和用户 (many:many through) 相关联。这在开发中有效。我可以创建一个新的邀请,它会发送一封包含邀请的电子邮件。此邀请具有 person_one_idperson_two_idorganization_id 的值。 Person_one 和 person_two 是 User 模型中的用户。这在开发中有效,控制台已确认正确返回 Invitation.first.organizationInvitation.first.person_oneInvitation.first.person_two 的记录。

问题在于我的邮件测试。虽然从夹具加载的邀请具有person_one_idperson_two_idorganization_id 的值,但如果在调试器中调用invitation.organizationinvitation.person_oneinvitation.person_two,它会返回nil

有人看到我的测试代码有什么问题导致了这个问题吗?


邮寄者:

def invitation(invitation)
  @invitation = invitation
  @organization = invitation.organization   # This returns nil even though invitation has a value for organization_id
  ...etc...
end

夹具:

invitation_one:
  person_one: users(:one)                 # Loads this person from users fixtures.
  person_two: users(:archer)
  organization: organizations(:one)       # Loads from organizations fixtures.
  message: I am pleased to invite you1

邮件测试:

test "invitation" do
  @invitation = invitations(:invitation_one)
  mail = InvitationMailer.invitation(@invitation)
  # Produces a "NoMethodError: undefined method `id' for nil:NilClass" error since a.o. invitation.organization is nil.
  ...etc...
end

我在加载固定装置的行之后在测试文件中添加了调试器。调试器回复@invitation

<Invitation id: 749093126, person_one_id: 41652760, person_two_id: 976142315, organization_id: 118162230, email: nil, message: "I am pleased to invite you1", created_at: "2015-07-05 09:06:23", updated_at: "2015-07-07 12:27:19"> 

这证明了关联(person_one_idperson_two_idorganization_id)具有值。尽管如此,调试器以 nill 响应 @invitation.organization,并且对 @invitation.person_one@invitation.person_two 执行相同的操作。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 testing associations


    【解决方案1】:

    问题出在设置的灯具上。要为我需要使用的灯具创建关联:

    invitation_one:
      person_one: one
      person_two: archer
      organization: one
      message: I am pleased to invite you1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-13
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 2016-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多