テスト駆動開発を教える際に、テストケースだけ渡すという方法をやってみた
本日会社のruby研修がありました。テーマは「テスト駆動開発」。その際に、id:yuum3がRubyKaigiで発表していた方法をやってみました。資料は以下のエントリーからDLできます。
yuum3の発表では、テスト駆動開発を教える際に、こちらが用意したテストケースを渡し、そのテストを通過するようなコードを書いてもらうという方法はどうだろう。という話でした。で、早速やってみました。テストケースは以下のような感じです。
- user_test.rb
class User end if __FILE__ == $0 require 'test/unit' class UserTest < Test::Unit::TestCase def test_initialize user = User.new(:name => 'bob', :age => 21 :sex => 0) assert_equal 'bob', user.name assert_equal 21, uesr.age assert_equal 'man', user.sex end end end
これをパスすればクリア。単純。上のテストをパスするだけでいいなら、こんな感じでパスできる。
- user_test.rb
class User attr_accessor :name, :age, :sex def initialize(attributes = {}) attrs = [:name, :age, :sex] attrs.each do |attr| instance_eval <<-EVAL @#{attr} = attributes[attr] EVAL end end def sex case @sex when 0 'man' else 'woman' end end end
楽しそうだった。いい方法でした^^