I’m trying out testing on my own for the first time in my User model and I realized that for every test I have a statement for user = User.create(:name => "something", :age => 3, :gender => "m"). Is there a before_filter or anything like that for tests so that I don’t have to make a user for each test? Or somehow put it in the global namespace so that it’s accessible everywhere?
require 'test_helper'
class UserTest < ActiveSupport::TestCase
test "user is created" do
user = User.create(:name => "Edmund", :age => 3, :gender => "m")
assert_equal user, User.find_by_name("Edmund")
assert_equal 3, User.count
end
test "user has sent messages" do
user = User.create(:name => "Edmund", :age => 3, :gender => "m")
2.times do
user.sent_messages.create(:sender_id => user.id)
end
assert_equal 2, user.sent_messages.count
end
test "user has received messages" do
user = User.create(:name => "Edmund", :age => 3, :gender => "m")
2.times do
user.received_messages.create(:receiver_id => user.id)
end
assert_equal 2, user.received_messages.count
end
end
Yes, you can define a setup method for your tests that will run before each test. If you define a global variable there it is accessible in all of the test cases.
Ex: