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 usernew\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