У меня проблема с моими Rails Tests. У меня есть модель Новости и модели Tag, которые имеют 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:
Tag Светильники:
one:
name: Music
two:
name: Movie
Когда я запускаю тест грабли: модели, два теста терпят неудачу, что это правильно. И когда я добавляю тег в новостную ленту и снова запускаю тест, тест проходит.
news1:
name: Newstest
tags: one
Но когда я удаляю тег в приборе и запускаю тест рейка: модели снова, тесты проходят снова. Как получается, что тесты верны после удаления «одного» тега.
Чтобы исправить это, я всегда должен запускать rake db:test:prepare
в консоли. Я не знаю, что я делаю неправильно.
, но проверка рейка не включает db: test: подготовить команду? – ChrisS
@Yoda, насколько мне известно. Это одна из причин, по которой я использую 'rspec'. Если вы включите 'config.use_transactional_fixtures = true' в rails_helper.rb, каждый тестовый пример запускается как отдельная транзакция в чистой базе данных. –