我有几个自定义验证器用于验证回形针附件是图像而不是超过 5MB。一切都按预期工作
不过我对一件事有点好奇。我的集成测试在上传失败后检查天气user.avatar
为零,并且它返回某种随机的东西。
考试:
it 'Does not allow a non-image file to be uploaded as an avatar' do
visit edit_user_path(@user)
attach_file('user_avatar', File.dirname(__FILE__)+'/users_spec.rb')
click_button 'Update'
page.should have_content "Avatar must be an image"
@user.reload
@user.avatar.should be_nil
end
结果:
1) Users Avatars Does not allow a non-image file to be uploaded as an avatar
Failure/Error: @user.avatar.should be_nil
expected: nil
got: /avatars/original/missing.png
# ./spec/requests/users_spec.rb:147:in `block (3 levels) in <top (required)>'
我猜这是某种默认的占位符回形针粘在那里,但是当我转到用户show
页面时,@user.avatar
正如nil
预期的那样。是什么赋予了?
我也试过了,结果一样
@user.should_not have_attached_file(:avatar)
鉴于它是回形针自己的匹配器,似乎它应该可以工作,但它也失败了
在几个 puts 语句之后,它似乎在对它做任何事情之前就@user.avatar
产生/avatars/original/missing.png
了,所以我想我至少可以确定它没有改变。