删除rspec rails中的对象

时间:2014-08-26 00:06:53

标签: ruby-on-rails rspec factory-bot destroy

我想创建一个对象,然后在rspec测试期间将其删除......这可能吗?

此代码:

describe User do

  it "should be invalid if email is not unique" do
    user = FactoryGirl.create(:user, id: 1, email: "g@g.com").should be_valid
    FactoryGirl.build(:user, email: "g@g.com").should_not be_valid
    User.destroy(user.id)
    FactoryGirl.build(:user, email: "g@g.com").should be_valid
  end


end

返回错误:

Failure/Error: User.destroy(user.id)
     NoMethodError:
       undefined method `id' for true:TrueClass

1 个答案:

答案 0 :(得分:5)

问题不在于您无法在rspec测试中删除用户 - 而是您的user对象未获得您想要的任务:

FactoryGirl.create(:user, id: 1, email: "g@g.com").should be_valid

评估为true,并分配给user。然后,当您尝试拨打user.id时,它会查找id的{​​{1}}属性并被卡住。

您可以将该特定行拆分为:

true

或者不担心本地用户变量,只是根据电子邮件地址删除,即

FactoryGirl.build(:user, id: 1, email: "g@g.com").should be_valid
user = FactoryGirl.create(:user, id: 1, email: "g@g.com")