Лучший способ перегрузить методы в Rails 3? - PullRequest
2 голосов
/ 26 августа 2011

Я использую стандартные тесты Rails.

В одном тесте я перегружаю метод Date.today:

class Date
  def  self.today
    Date.new(2011,7,19)
  end
end

Это прекрасно работает для тестов в этом файле, но переносит на другие тесты и приводит к их сбою.Как ограничить эффекты этого кода одним файлом?

Я понимаю, что это может быть не лучшим способом проведения тестов.Есть ли какие-нибудь пошаговые руководства, которые вы рекомендуете?

Спасибо.

Rails 3.07

1 Ответ

5 голосов
/ 26 августа 2011

Спасибо d11wtq за код выше.

Вот как я это сделал:

  1. $ gem install 'mocha'
  2. Добавлено gem 'mocha' в группу: тест в Gemfile (см. Ниже)
  3. $ bundle install
  4. В файле model_test.rb добавлено require 'mocha' в строке после require 'test_helper'
  5. Добавлены следующие 3 строки в класс ModelTest в model_test.rb:
    setup do      
      Date.stubs(:today).returns(Date.new(2011, 7, 19))
    end

Я нашел этот пост полезным введением в Мокко: http://yarorb.wordpress.com/2007/11/26/mocks-and-stubs-in-ruby-on-rails-the-mocha-solution/

РЕДАКТИРОВАТЬ: Больше информации:

Я обнаружил, что вам нужно добавить следующее для удаления заглушки после каждого теста. Я поставил это после метода установки:

  teardown do
    Date.unstub(:today)
  end

И, я думаю, вам нужен следующий гем для: test group в Gemfile: gem 'test-unit', '1.2.3'

...