Ruby on rails 两个相似的rspec测试,得出相反的结果

Ruby on rails 两个相似的rspec测试,得出相反的结果,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,我有一个用户模型: class User < ActiveRecord::Base attr_accessible :email, :name # admin only attr_accessible :email, :name, :admin, :as => :admin 我不明白为什么我的测试变体1失败了,但是变体2通过了。我收到的错误消息是: 1) User accessible attributes can not be set on create F

我有一个用户模型:

class User < ActiveRecord::Base
  attr_accessible :email, :name
  # admin only
  attr_accessible :email, :name, :admin, :as => :admin
我不明白为什么我的测试变体1失败了,但是变体2通过了。我收到的错误消息是:

1) User accessible attributes can not be set on create
     Failure/Error: expect do
       expected ActiveModel::MassAssignmentSecurity::Error but nothing was raised

它们基本上是相同的测试。我做错了什么?事实上,如果我从控制台执行测试1,它确实会像预期的那样抛出一个MAS::错误。我很困惑。

@admin\u attrs对于您的第一个文本示例来说可能是零,因为它不是在before钩子(或通过“let”)中设置的。

@admin\u attrs对于您的第一个文本示例来说可能是零,因为它不是在before钩子(或通过“let”)中设置的。

为什么要编写
let(:new_user){FactoryGirl.create(:user)}
且从不使用
new_user
方法?如果需要管理员,可以在
FactoryGirl.create
中传递
admin:true
。通过扩展
user
的工厂,为管理员创建独立的工厂(请参阅
parent
在文档中键入关键字)@jdoe,谢谢,我确实使用了
new\u user
对象,就在其他地方,谢谢你的链接为什么要编写
let(:new\u user){FactoryGirl.create(:user)}
和never user
new\u user
方法?如果您需要管理员,您可以在
FactoryGirl中传递
admin:true
。通过扩展
用户的工厂来创建
或甚至为管理员创建单独的工厂(请参见
父级
键入文档)@jdoe,谢谢,我确实使用了
new\u user
对象,就在别处,谢谢链接,这是正确的。为了澄清-
description
生成一个类,然后
生成它(有效地)实例方法。
@admin\u attrs
是在类级别声明的,对实例方法不可用。谢谢你们,这对我现在来说很有意义。这是正确的。为了澄清-
描述
生成一个类并
它生成(有效地)实例方法。
@admin\u attrs
是在类级别声明的,对实例方法不可用。谢谢你们,这对我来说很有意义。
1) User accessible attributes can not be set on create
     Failure/Error: expect do
       expected ActiveModel::MassAssignmentSecurity::Error but nothing was raised