0
我有经过大部分时间测试:偶尔失败RSpec的测试
....
Finished in 1.58 seconds
4 examples, 0 failures
Randomized with seed 29966
但有时会失败:
.F..
Failures:
1) Admin::SessionsController POST create authenticates correct users submissions
Failure/Error: expect(session[:user_id]).to be @user.id
expected #<Fixnum:3> => 1
got #<NilClass:4> => nil
Compared using equal?, which compares object identity,
but expected and actual are not the same object. Use
`expect(actual).to eq(expected)` if you don't care about
object identity in this example.
# ./spec/controllers/admin/sessions_controller_spec.rb:12:in `block (3 levels) in <top (required)>'
Finished in 1.24 seconds
4 examples, 1 failure
Failed examples:
rspec ./spec/controllers/admin/sessions_controller_spec.rb:10
有什么特别的情由任何人都可以在此看到?
规格:
describe "POST create" do
it "authenticates correct users submissions" do
post :create, email: @user.email, password: @user.password
expect(session[:user_id]).to be @user.id
end
it "correctly sets @invalid flag" do
post :create, email: "wrong", password: "wrong"
assigns(:invalid).should be_true
end
end
控制器行动正在测试:
def create
user = Admin::User.authenticate(params[:email], params[:password])
if user
session[:user_id] = user.id
redirect_to admin_root_path
else
@invalid = true
render :new
end
end
任何帮助将非常感激。让我知道是否需要更多细节。
@user是如何为您的规范创建的?可以在为“Admin :: User.authenticate”创建用户之前调用问题示例以查找? – Mori
看起来您已经设置了rspec来随机化测试运行的顺序 - 您可能想要查看在失败测试之前运行了哪些测试,以查看测试失败时是否存在某些问题。 –