Как вы «вкладываете» или «группируете» Test :: Unit tests? - PullRequest
20 голосов
/ 08 мая 2011

RSpec имеет:

describe "the user" do
  before(:each) do
    @user = Factory :user
  end

  it "should have access" do
    @user.should ...
  end
end

Как бы вы сгруппировали такие тесты с Test :: Unit? Например, в моем тесте контроллера я хочу проверить контроллер, когда пользователь вошел в систему и когда никто не вошел в систему.

Ответы [ 4 ]

10 голосов
/ 07 августа 2013

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

class MySuperTest < ActiveSupport::TestCase
  test "something general" do
    assert true
  end

  class MyMethodTests < ActiveSupport::TestCase

    setup do
      @variable = something
    end

    test "my method" do
      assert object.my_method
    end
  end
end
6 голосов
/ 08 мая 2011

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

3 голосов
/ 11 мая 2011

Следует https://github.com/thoughtbot/shoulda хотя похоже, что теперь они превратили контекстный код в отдельный гем: https://github.com/thoughtbot/shoulda-context

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

Использование shoulda-context:

В вашем Gemfile:

gem 'shoulda-context'

И в ваших тестовых файлах вы можете делать что-то вроде:из test:

class UsersControllerTest < ActionDispatch::IntegrationTest
  context 'Logged out user' do
    should "get current user" do
      get api_current_user_url

      assert_response :success
      assert_equal response.body, "{}"
    end
  end
end
...