0

私はプログラミングにかなり慣れておらず(3か月)、TDDを介して学習しようとしています。

明らかに、TDDのポイントは、最初にテストケースを作成することです。この特定の部分は、方法がわかりませんでした。

コードスニペットは次のとおりです。

class PhraseFactory
  def initialize
    @sentence = ''
  end
  def make_sentences_from
    for i in 0 ... self.length
      @sentence += self[i] + ' '
    end
  end  

私がそれをテストすることをどのように考えていたか:

describe "When sent a message(<< is that proper terminology?) from an array of strings"
  it "Builds a sentence"
    my_word_array.should_have (here is where I am unclear)sent_a_message_to(make_sentences_from)

助けてくれてありがとう。

4

2 に答える 2

3

私は TDD が好きですが、何か新しいことを学ぶために TDD を使用することはお勧めしません。REPL (irb) を使用してコードを試すことは常に良い考えです。

あなたの例は、Ruby 開発者にとって WTF でいっぱいです。

  • すべての END がありません (python のように見えますか?!)
  • 何かに Factory という名前を付けています (あなたは Java 派ですか?)
  • each の代わりに for を使用します
  • あなたはワンライナーであるべきクラスで何かをしています
  • コア機能を再構築することで車輪を再発明します

それ以外に、私はあなたの質問とコードを本当に理解していません...

あなたのコードの結果はどうあるべきですか? あなたの「工場」への入力は何ですか

$ irb
> %(you can just use join to build a sentence from an array of words).join
"you can just use join to build a sentence from an array of words"
于 2012-07-03T16:51:41.787 に答える
1

新しい言語 (Ruby) と技術 (TDD) の両方を一度に学ぶのは、少し多すぎるかもしれません。一方、単体テストはコードの動作を明確にする優れた方法であり、優れた学習ツールでもあります。ここでの 1 つの提案は、Ruby Koans のようなものを調べることです: http://rubykoans.com/

私は Rubyist ではないので、その品質についてコメントすることはできませんが、Ruby のものを改造した F# Koans を使用しましたが、かなり優れていました。これにより、言語への優れたエントリー ポイントと単体テストへの習熟度の両方が得られるはずです。これは、独自のプロジェクトで作業を開始して TDD に取り掛かる際に役立つはずです。

于 2012-07-03T17:15:45.727 に答える