0

私は自分のモデルで初めて自分でテストを試みていますが、Userすべてのテストでuser = User.create(:name => "something", :age => 3, :gender => "m"). テストごとにユーザーを作成する必要がないように、テスト用の before_filter などがありますか? または、どこからでもアクセスできるように、どういうわけかグローバル名前空間に入れますか?

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
4

1 に答える 1

3

はい、各テストの前に実行されるテストのセットアップ メソッドを定義できます。そこでグローバル変数を定義すると、すべてのテスト ケースでアクセスできます。

元:

class UserTest < ActiveSupport::TestCase

  setup do
    @user = User.create(:name => "Edmund", :age => 3, :gender => "m")
  end

  test "user has sent messages" do
    2.times do 
      @user.sent_messages.create(:sender_id => user.id)
    end
    assert_equal 2, @user.sent_messages.count
  end

end
于 2012-12-04T20:01:09.273 に答える