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?!)
  • 你正在命名一些东西工厂(你是一个java人吗?)
  • 你用 for 而不是 each
  • 你在一个应该是oneliner的班级里做事
  • 您通过重建核心功能来重新发明轮子

除此之外,我真的不明白你的问题和代码......

你的代码的结果应该是什么?你的“工厂”的输入是什么

$ 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)可能有点太多了。另一方面,我发现单元测试是澄清代码行为的好方法,也是一个很好的学习工具。这里的一个建议是研究 Ruby Koans 之类的东西:http: //rubykoans.com/

我不是 Rubyist,所以我无法评论它们的质量,但我使用了 F# Koans,它改编自 Ruby,非常好。这既应该为您提供进入该语言的良好入口点,也应该熟悉单元测试,一旦您开始从事自己​​的项目并进入 TDD,这应该会为您提供很好的帮助。

于 2012-07-03T17:15:45.727 回答