2016-07-05 7 views
0

私は文字列、配列などを比較する一連の小さなRubyプログラムを書いています。私は現在、自分のメソッドのために小さなユニットテストを書く方法を学んでいます。私は文字列に関数を実行する単純なテストを書くことができましたが、配列の関数を実行するテストのような難しいテストについては、わかりません。誰かがこの現在の質問で私を助けることができたら、私は本当にそれを感謝します。ここでplant_methods.rbに何だprogram.rb、plant_methods.rb、およびtc_plant_methods.rbRubyでテストする - 配列のサブアレイを比較するテストを書く方法は?

それでは、私は3つの私のフォルダ内のファイルを持っているとしましょう。このクラスには2つのメソッドがあるクラスが含まれています。 plant_sortメソッドは、配列の配列をループし、配列の最初の項目に従ってアルファベット順に並べ替えます。ここで

class Plant_Methods 
    def initialize 
    end 

    def self.plant_sort(array) 
    array.sort! { |sub_array1, sub_array2| 
     sub_array1[0] <=> sub_array2[0] } 
    end 
end 

はprogram.rbが実行されたときにprogram.rb

require_relative 'plant_methods' 

plant_array = [['Rose', 'Lily', 'Daisy'], ['Willow', 'Oak', 'Palm'], ['Corn', 'Cabbage', 'Potato']] 

Plant_Methods.plant_sort(plant_array) 

print plant_array 

そしてここでのコードが出力されています。あなたは、各サブアレイは今最初の要素に基づいてアルファベット順に並べているように:今

[["Corn", "Cabbage", "Potato"], ["Rose", "Lily", "Daisy"], ["Willow", "Oak", "Palm"]] 

、私の質問は:どのように私は、このためのユニットテストを書くのですか?ここに私のtc_plant_methods.rbファイルに現在何だ:

require_relative "plant_methods" 
require_relative "program" 
require "test/unit" 

class Test_Plant_Methods < Test::Unit::TestCase 

    def test_plant_sort 
    assert_equal("[["Gingko", "Beech"], ["Rice", "Wheat"], ["Violet", "Sunflower"]]", Plant_Methods.new([["Violet", "Sunflower"], ["Gingko", "Beech"], ["Rice", "Wheat"]]).plant_sort([["Violet", "Sunflower"], ["Gingko", "Beech"], ["Rice", "Wheat"]])) 
    end 

end 

私はユニットテストを実行しようとすると、私はエラーを得続けます。私はここで間違ったことをして誰でも識別できますか? 「[[」、ここで、

"[["Gingko", "Beech"], ["Rice", "Wheat"], ["Violet", "Sunflower"]]" 

tc_plant_methods.rb:8: syntax error, unexpected tCONSTANT, expecting ')' 

答えて

0

エラーが式の中で、二重引用符の誤った使用によるものである: は、ここで私がテストを実行しようとすると、上昇した最初のエラーです[

文字列の等価性をアサートするのではなく、配列の等価性を宣言してみませんか?

assert_equal([["Gingko", "Beech"], ["Rice", "Wheat"], ["Violet", "Sunflower"]], Plant_Methods.new([["Violet", "Sunflower"], ["Gingko", "Beech"], ["Rice", "Wheat"]]).plant_sort([["Violet", "Sunflower"], ["Gingko", "Beech"], ["Rice", "Wheat"]])) 
関連する問題