Ответ 1
Test::Unit
, насколько мне известно, не поддерживает тестовые контексты. Однако gem contest
добавляет поддержку блоков контекста.
RSpec имеет:
describe "the user" do
before(:each) do
@user = Factory :user
end
it "should have access" do
@user.should ...
end
end
Как бы вы группировали тесты с помощью Test:: Unit? Например, в моем тесте контроллера я хочу протестировать контроллер, когда пользователь выполнил вход и когда никто не был подписан.
Test::Unit
, насколько мне известно, не поддерживает тестовые контексты. Однако gem contest
добавляет поддержку блоков контекста.
Вы можете добиться чего-то подобного через классы. Вероятно, кто-то скажет, что это ужасно, но это позволяет вам разделить тесты в одном файле:
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
Shoulda https://github.com/thoughtbot/shoulda, хотя похоже, что они теперь превратили контекстно-зависимый код в отдельный камень: https://github.com/thoughtbot/shoulda-context
Используя shoulda-context
:
В вашем Gemfile:
gem 'shoulda-context'
И в тестовых файлах вы можете делать такие вещи (обратите внимание на should
вместо 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