Ruby on rails Rspec.未定义的方法“有效”和#x27;for:user:Symbol

Ruby on rails Rspec.未定义的方法“有效”和#x27;for:user:Symbol,ruby-on-rails,rspec,Ruby On Rails,Rspec,我尝试为用户-工厂创建测试。但当我运行测试时,“rspec”向我显示一个错误 Failure/Error: expect(:user).to be_valid NoMethodError: undefined method `valid?' for :user:Symbol 这是我的用户_spec.rb require 'rails_helper' RSpec.describe do it "has a valid factory" do user = FactoryGi

我尝试为用户-工厂创建测试。但当我运行测试时,“rspec”向我显示一个错误

Failure/Error: expect(:user).to be_valid
 NoMethodError:
   undefined method `valid?' for :user:Symbol
这是我的用户_spec.rb

require 'rails_helper'

RSpec.describe do
  it "has a valid factory" do
    user = FactoryGirl.create(:user)
    expect(:user).to be_valid
  end
end
这是用户工厂(带有“伪造”宝石)

如何修复以及为什么此方法不起作用

很抱歉我的英语不好这里有一个解决办法:

RSpec.describe do
  it "has a valid factory" do
    user = FactoryGirl.create(:user)
    expect(user).to be_valid
  end
end
您将符号
:user
作为参数传递给
expect(:user)
,您不应该这样做。您应该传递您已创建的局部变量
user
,并传递给它
expect(user)

以下是一个修复方法:

RSpec.describe do
  it "has a valid factory" do
    user = FactoryGirl.create(:user)
    expect(user).to be_valid
  end
end
您将符号
:user
作为参数传递给
expect(:user)
,您不应该这样做。您应该传递您已创建的局部变量
user
,并传递给它
expect(user)

以下是一个修复方法:

RSpec.describe do
  it "has a valid factory" do
    user = FactoryGirl.create(:user)
    expect(user).to be_valid
  end
end
您将符号
:user
作为参数传递给
expect(:user)
,您不应该这样做。您应该传递您已创建的局部变量
user
,并传递给它
expect(user)

以下是一个修复方法:

RSpec.describe do
  it "has a valid factory" do
    user = FactoryGirl.create(:user)
    expect(user).to be_valid
  end
end

您将符号
:user
作为参数传递给
expect(:user)
,您不应该这样做。您应该传递您创建的局部变量
user
,并传递给它
expect(user)

在帽子里没有认出您:)@是的,我戴着它。。怎么了?没认出戴着帽子的你:)是的,我戴着。。怎么了?没认出戴着帽子的你:)是的,我戴着。。怎么了?没认出戴着帽子的你:)是的,我戴着。。怎么回事?创建用户是一个对象,而不是代表工厂女孩的对象的符号。谢谢Dave,我明白了创建用户是一个对象,而不是代表工厂女孩的对象的符号。谢谢Dave,我明白了创建用户是一个对象,而不是代表工厂女孩的对象的符号。谢谢Dave,我明白了创建用户是一个对象,而不是对工厂女孩表示该对象的符号。谢谢Dave,我明白了