2012-07-03 67 views
0

我是一个相当新的编程(3个月),并试图通过TDD学习。阵列方法的Rspec测试案例

显然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) 

感谢您的帮助。

回答

3

我喜欢TDD,但我不会推荐任何人使用TDD来学习新东西!使用REPL(irb)来实验代码总是一个好主意。

您的例子是全WTFs的任何Ruby开发者:

  • 你丢失了所有的两端(看起来有点像蟒蛇?)
  • 你命名的东西厂(你是一个Java的家伙? )
  • 您使用
  • ,而不是每个
  • 你在一个类做的东西,应该是一个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" 
+0

我同意,不要担心rspec或TDD,直到你掌握了红宝石的基础知识...... – DGM

+0

对不起,关于遗漏的结局,noob遗漏。班级名称是一种侥幸,我只是称它为功能原因。而不是每个人都在玩我在红宝石镐书中找到的代码。我意识到代码是多余的,我只是试图巩固基础知识。工厂的输入是(应该是)像句= this_array_of_strings.make_sentence_from – Discorick

+0

它也出现在我身上......为了这个工作,我想有必要让我的方法扩展Array类,不是自己的一类?否则,我将不得不每次都重新启动它? – Discorick

1

同时学习一种新的语言(红宝石)和技术(TDD)可能有点太多。另一方面,我发现单元测试是澄清代码行为的好方法,也是一种很好的学习工具。这里的一个建议是看看Ruby Koans:http://rubykoans.com/

我不是Rubyist,所以我不能评论他们的质量,但我使用了F#Koans,它们是从Ruby中改编的,并且非常好。这应该为你提供一个很好的入门语言,并且熟悉单元测试,一旦你开始自己的项目并进入TDD,它应该能很好地为你服务。

+0

非常酷的资源,谢谢你的回应。 – Discorick