Как вы тестируете код, который не является моделью или контроллером? - PullRequest
3 голосов
/ 07 марта 2009

У меня есть класс, определенный в файле lib dir моего Rails-проекта, который будет реализовывать набор служебных функций в качестве методов класса. Я хотел бы написать тесты для этих методов, используя Test :: Unit и запустить их как часть обычной процедуры тестирования проекта.

Я пытался прикрепить файл на верхнем уровне test dir ...

require 'test_helper'

class UtilsTest < ActiveSupport::TestCase
  should 'be true' do
    assert false
  end
end

... но это не сработало. Тест не запускался.

Как обычно тестировать код, который не входит в состав Rails?

Ответы [ 3 ]

7 голосов
/ 07 марта 2009

Я просто вставляю их в тест / единицу. Я не уверен, что это «правильный» подход, но мне кажется, что он работает ...

4 голосов
/ 07 марта 2009

Вы можете без проблем поместить их в свой каталог юнитов.

Моя библиотека:

[ cpm juno ~/apps/feedback ] cat lib/my_library.rb
class MyLib
  def look_at_me
    puts "I DO WEIRD STUFF"
  end
end

Мой тест:

[ cpm juno ~/apps/feedback ] cat test/unit/fake_test.rb
require 'test_helper'

class FakeTest < ActiveSupport::TestCase
  # Replace this with your real tests.
  def test_truth
    require 'my_library'

    puts "RUNNING THIS NOW"
    MyLib.new.look_at_me
    assert true
  end
end

И запустить его:

[ cpm juno ~/apps/feedback ] rake test:units
(in /home/cpm/apps/feedback)
/usr/bin/ruby1.8 -Ilib:test "/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader.rb" "test/unit/fake_test.rb"
Loaded suite /usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader
Started
RUNNING THIS NOW
I DO WEIRD STUFF
.
Finished in 0.254404 seconds.

1 tests, 1 assertions, 0 failures, 0 errors
Loaded suite /var/lib/gems/1.8/bin/rake
Started

Finished in 0.00094 seconds.

0 tests, 0 assertions, 0 failures, 0 errors

Пока он заканчивается на _test.rb, он должен его забрать.

1 голос
/ 21 марта 2009

это пример test \ functions \ application_helper_test.rb, который проверяет функциональность помощника

require File.dirname(__FILE__) + '/../test_helper'

require 'application_helper'

class HelperTest < Test::Unit::TestCase
    include ApplicationHelper

    def test_clear_search_string
        assert_equal 'Park Ave', clear_search_string('street Park Ave')
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...