Ruby 如何使用subject/let/it和FactoryGirl以简单的rspec测试进行重构?

Ruby 如何使用subject/let/it和FactoryGirl以简单的rspec测试进行重构?,ruby,validation,ruby-on-rails-4,testing,rspec,Ruby,Validation,Ruby On Rails 4,Testing,Rspec,基本上,我有一个非常简单的测试,我检查格兰特的帐号id(他的父母的id)是否等于角色模型的帐号id。 这个测试看起来还可以,但我需要重构它来使用subject/let和FactoryGirl,即使我找到了关于这个主题的所有信息,我也不能这么做。 所以,测试很好,我只是需要重构方面的帮助。 这是我第一次使用rails并在其上编写测试,所以我不得不在这里提出这类问题 描述“验证”是什么 结束这个问题应该在这里,因为它只是关于重构一个工作代码。基本上,您想要做的是将变量声明更改为let块,并更改。ne

基本上,我有一个非常简单的测试,我检查格兰特的帐号id(他的父母的id)是否等于角色模型的帐号id。 这个测试看起来还可以,但我需要重构它来使用subject/let和FactoryGirl,即使我找到了关于这个主题的所有信息,我也不能这么做。 所以,测试很好,我只是需要重构方面的帮助。 这是我第一次使用rails并在其上编写测试,所以我不得不在这里提出这类问题

描述“验证”是什么


结束

这个问题应该在这里,因为它只是关于重构一个工作代码。基本上,您想要做的是将变量声明更改为
let
块,并更改
。new
调用模型来使用Factory bot的
build
方法,而不是EADBTW
Factory\u girl
已被弃用。您可能需要更新到
工厂\u bot
it "should have equal account_id" do
  first_acc, second_acc = Account.new, Account.new
  first_acc.id, second_acc.id = 10, 11
  vlada_role, vlada_grant = Role.new, Grant.new
  vlada_role1, vlada_grant1 = Role.new, Grant.new

  vlada_role.account_id = first_acc.id
  vlada_grant.account_id = second_acc.id
  vlada_role.id, vlada_grant.id = 8000, 255

  rg = RoleGrant.new
  rg1 = RoleGrant.new

  rg.role, rg1.role = vlada_role, vlada_role1
  rg.grant, rg1.grant = vlada_grant, vlada_grant1

  expect(rg.role.account_id).not_to eql(rg.grant.account_id)
  expect(rg1.role.account_id).to eql(rg1.grant.account_id)
end