在我們的Rails應用程序,我們有以下型號:Rails的驗證測試不及格
class User < ActiveRecord::Base
has_many :administrations, dependent: :destroy
has_many :calendars, through: :administrations
end
class Administration < ActiveRecord::Base
belongs_to :user
belongs_to :calendar
end
class Calendar < ActiveRecord::Base
has_many :administrations, dependent: :destroy
has_many :users, through: :administrations
end
我們試着用以下administration_test.rb
測試文件來驗證管理模式:
需要「test_helper」
class AdministrationTest < ActiveSupport::TestCase
def setup
@user = users(:noemie)
@administration = Administration.new(user_id: @user.id, calendar_id: @calendar_id)
end
test "should be valid" do
assert @administration.valid?
end
test "user id should be present" do
@administration.user_id = nil
assert_not @administration.valid?
end
test "calendar id should be present" do
@administration.calendar_id = nil
assert_not @administration.valid?
end
end
當我們運行測試,我們得到如下結果:
FAIL["test_calendar_id_should_be_present", AdministrationTest, 2015-06-30 07:24:58 -0700]
test_calendar_id_should_be_present#AdministrationTest (1435674298.26s)
Expected true to be nil or false
test/models/administration_test.rb:21:in `block in <class:AdministrationTest>'
FAIL["test_user_id_should_be_present", AdministrationTest, 2015-06-30 07:24:58 -0700]
test_user_id_should_be_present#AdministrationTest (1435674298.27s)
Expected true to be nil or false
test/models/administration_test.rb:16:in `block in <class:AdministrationTest>'
我們有點失落:這是正確的測試方法嗎?
如果不是,我們該怎麼寫呢? 如果是,我們該如何讓它通過?
好了,看看我的答案,但因爲你的測試很容易發生誤報。 – max