Как провести модульное тестирование моделей пространства имен - PullRequest
4 голосов
/ 29 июля 2011

В моем приложении Rails я интенсивно использую подкаталоги каталога модели и, следовательно, модели с пространством имен - то есть у меня есть следующая иерархия каталогов:

models
|
+- base_game
|  |
|  +- foo.rb (defines class BaseGame::Foo)
|
+- expansion
   |
   +- bar.rb (defines class Expansion::Bar) 

Это обеспечивается Rails - чтоэто просто не работает, чтобы вызвать классы "просто" Foo и Bar.

Я хочу провести модульное тестирование этих классов (с использованием musta поверх ActiveSupport :: TestCase).Я знаю, что имя тестируемого класса будет производным от имени класса тестового примера.

Как мне написать модульные тесты, которые будут проверять эти классы?

Ответы [ 3 ]

4 голосов
/ 31 июля 2011

Оказывается, это просто, даже при нормальном ActiveSupport / Test::Unit. Просто продублируйте структуру каталогов модели в /test:

test
|
+- base_game
|  |
|  +- foo_test.rb (defines class BaseGame::FooTest)
|
+- expansion
   |
   +- bar_test.rb (defines class Expansion::BarTest) 
2 голосов
/ 29 июля 2011

Это должно работать напрямую, я использую Rspec, и это прямо:

describe User::Profile do

  it "should exist" do
    User::Profile.class.should be_a Class
  end

  it { should validate_presence_of(:name) }

end
0 голосов
/ 27 ноября 2014

Вот код, который работал для меня с ruby -I и zeus:

require "test_helper"

class BaseGame::Foo < ActiveSupport::TestCase
  include BaseGame

  should "let #baz do something" do
    assert Foo.new.baz
  end

end

Вы также можете сделать

require "test_helper"

class BaseGame::Foo < ActiveSupport::TestCase

  should "let #baz do something" do
    assert BaseGame::Foo.new.baz
  end

end
...