Rails初学者尝试TDD:

时间:2011-10-24 20:26:30

标签: ruby-on-rails model tdd specifications

我不熟悉单元测试和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 个答案:

答案 0 :(得分:2)

我建议:

  1. 使用before do # code # end

    设置条件。

  2. 每次进行1次测试。你有很多事情要做:)

  3. 使用Factory Girl。

  4. 尝试你所拥有的并从那里开始工作(敏捷方法,甚至是添加测试)。