0
我的Rails測試出現問題。 我有一個模型新聞和型號標記,其中有一個HABTM關係 新聞型號:測試方法始終保密
class News < ActiveRecord::Base
has_and_belongs_to_many :tags
validates :name, presence: true, length: { minimum: 4 }
validate :has_tags?
private
# Validates presence of tags
def has_tags?
errors.add(:tags, ": News must have some tags.") if self.tags.blank?
end
測試模型:
class Tag < ActiveRecord::Base
has_and_belongs_to_many :news
validates :name, presence: true
我寫的has_tags驗證測試:
test "should be valid" do
assert @news.valid?
end
test "news should have tags" do
assert_not @news.tags.blank?
end
我的新聞賽程:
news1:
name: Newstest
tags:
個
標籤燈具:
one:
name: Music
two:
name: Movie
當我運行rake測試:機型,這兩個測試是失敗的,這是正確的。 當我給News Fixture添加標籤並再次運行測試時,測試通過。
news1:
name: Newstest
tags: one
但是,當我刪除夾具中的標籤並運行rake測試:再次測試模型時,測試再次通過。 這是怎麼回事,刪除「one」標籤後測試是否成立。
要解決這個問題,我總是必須在控制檯中運行rake db:test:prepare
。 我不知道我在做什麼錯。
但耙測試不包括db:test:prepare命令? – ChrisS
@Yoda不是我所知。這是我使用'rspec'的原因之一。如果在rails_helper.rb中包含'config.use_transactional_fixtures = true',則每個測試示例都將作爲單獨的事務在乾淨的數據庫上運行。 –