RSpec Active Record Scope - PullRequest
       2

RSpec Active Record Scope

1 голос
/ 20 декабря 2010

Я хочу написать область, которая требует, чтобы дата начала продуктов была меньше, чем сегодня. Я написал следующее в rspec

it "Should not be found with a start date in the future" do
   @product.start_date = Date.tomorrow
   @product.save

   Product.active.find(@product.id).should == nil
end

Этот тест не пройден, очевидно. Тогда я написал сферу-

scope :active, where('start_date <= ?', Date.today)

Затем я перезапускаю спецификацию, и она не работает с ...

2) Product Should not be found with a start date in the future
 Failure/Error: Product.active.find(@product.id).should_not == true
 Couldn't find Product with ID=1 [WHERE (start_date <= '2010-12-20')]
 # ./spec/models/product_spec.rb:168:in `block (2 levels) in <top (required)>'

Я не могу понять, как заставить этот код пройти. Я не хочу, чтобы товар был найден.

1 Ответ

3 голосов
/ 20 декабря 2010

Посмотрите на ошибку: "Не удалось найти продукт с идентификатором = 1" , область действия фактически работает. Проблема в вашем тесте, find вызывает исключение, как обычно, потому что запись не была найдена. Вы должны либо использовать find_by_id, либо подтвердить исключение с помощью rspec.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...