Начинающий Rails Попытка TDD: - PullRequest
       5

Начинающий Rails Попытка TDD:

1 голос
/ 25 октября 2011

Я новичок в модульном тестировании и Rails в целом. Я решил строить свои проекты в среде TDD, но у меня остались некоторые первые вопросы. Мне нужна помощь в построении моделей, чтобы пройти этот тест:

describe User do
  it "should add user to team" do
    team = Team.create(:name => "Tigers")
    akash = User.create(:name => "Akash")
    akash.teams << team
    akash.memberships.size.should == 1
  end
  it "should allow buddyup"
    john = User.create(:name => "John")
    john.buddyup_with(akash)
    john.memberships.size.should == 1
  end
  it "should validate linked buddys"
    akash.buddys.should include(john)
  end
end

По сути, ВСЕ, что я хочу сейчас сделать, - это пройти тесты. Вот что у меня так далеко:

class Team < ActiveRecord::Base
  has_and_belongs_to_many :users
  attr_accessubke :name

  validates :name, :presence = true
                   :uniqueness => true
end

class User < ActiveRecord::Base
  has_and_belongs_to_many: :teams
  attr_accessible :name

  validates :name, :presence = true
                   :uniqueness => true 
end

class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.string :name

      t.timestamps
    end
  end

  def self.down
    drop_table :users
  end
end

class CreateTeams < ActiveRecord::Migration
  def self.up
    create_table :teams do |t|
      t.string :name

      t.timestamps
    end
  end

  def self.down
    drop_table :teams
  end
end

class CreateTeamsUsersJoinTable < ActiveRecord::Migration
  def self.up
    create_table :teams_users, :id => false do |t|
      t.integer :team_id
      t.integer :user_id
    end
  end

  def self.down
    drop_table :teams_users
  end
end

Это все, что у меня есть до сих пор, и, очевидно, это далеко не завершено. Не могли бы вы дать некоторое представление и, возможно, код, который я должен использовать для этого? Моя самая большая проблема сейчас - это buddyup_with часть. Добавление друга добавит человека в каждую команду, членом которой вы являетесь, представьте, что команды - это часть компании-разработчика, а друзья - ученики или что-то в этом роде.

1 Ответ

2 голосов
/ 25 октября 2011

Предложения, которые я бы сделал:

  1. Использование before do # code # end

    чтобы настроить ваши условия.

  2. Делать 1 тест на. У вас там много чего происходит:)

  3. Используйте Фабрику.

  4. Попробуйте то, что у вас есть, и оттуда работайте (Agile подход, даже для добавления тестов).

...