rspec';什么是eq法?
我有点困惑:rspec';什么是eq法?,rspec,Rspec,我有点困惑: class SessionsController < ApplicationController def new @user = User.new end end 但我明白了: FFF 失败: 1) SessionsController#new should eq #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_dig
class SessionsController < ApplicationController
def new
@user = User.new
end
end
但我明白了:
FFF
失败:
1) SessionsController#new should eq #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil>
Failure/Error: it { expect(assigns(:user)).to eq user }
expected: #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil>
got: #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil>
(compared using ==)
Diff:
# ./spec/controllers/sessions_controller_spec.rb:8:in `block (3 levels) in <top (required)>'
2) SessionsController#new should eq #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil>
Failure/Error: it { expect(assigns(:user)).to eq User.new }
expected: #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil>
got: #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil>
(compared using ==)
Diff:
# ./spec/controllers/sessions_controller_spec.rb:10:in `block (3 levels) in <top (required)>'
3) SessionsController#new should assign stubbed user
Failure/Error: assigns(:user).should eq user
expected: #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil>
got: #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil>
(compared using ==)
Diff:
# ./spec/controllers/sessions_controller_spec.rb:13:in `block (3 levels) in <top (required)>'
1)会话控制器#新的应#
失败/错误:它{expect(assigns(:user))。to eq user}
预期:#
得到:#
(使用==进行比较)
差异:
#./spec/controllers/sessions\u controllers\u spec.rb:8:in'block(3层)in'
2) 会话控制器#新的应为#
失败/错误:它{expect(assigns(:user))。to eq user.new}
预期:#
得到:#
(使用==进行比较)
差异:
#./spec/controllers/sessions\u controllers\u spec.rb:10:in'block(3层)in'
3) SessionController#新用户应分配存根用户
失败/错误:分配(:用户)。是否应eq用户
预期:#
得到:#
(使用==进行比较)
差异:
#./spec/controllers/sessions\u controller\u spec.rb:13:in'block(3层)in'
我是说什么?
Diff
部分甚至是空的。如果我使用的是be
matcher,我会理解,但我使用的是eq
,那么发生了什么事?尝试使用eq方法比较user.attributes
,它应该通过。在ActiveRecord中,如果两个模型对象具有相同的类和相同的非零主键值,则认为它们是相等的
因此,如果两个相同的对象具有nilid
值,则它们不相等
看
这可能看起来很奇怪,但是如果你认为这两个对象如果被保存了,就会被数据库分配两个不同的<代码> ID <代码>值,这是有意义的。因此,在分配ActiveRecord模型对象的
id
之前,它无法与另一个对象进行有意义的比较
1) SessionsController#new should eq #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil>
Failure/Error: it { expect(assigns(:user)).to eq user }
expected: #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil>
got: #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil>
(compared using ==)
Diff:
# ./spec/controllers/sessions_controller_spec.rb:8:in `block (3 levels) in <top (required)>'
2) SessionsController#new should eq #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil>
Failure/Error: it { expect(assigns(:user)).to eq User.new }
expected: #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil>
got: #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil>
(compared using ==)
Diff:
# ./spec/controllers/sessions_controller_spec.rb:10:in `block (3 levels) in <top (required)>'
3) SessionsController#new should assign stubbed user
Failure/Error: assigns(:user).should eq user
expected: #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil>
got: #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil>
(compared using ==)
Diff:
# ./spec/controllers/sessions_controller_spec.rb:13:in `block (3 levels) in <top (required)>'