2017-10-25 10 views
0

私はUserクラスを持っています。has_manyJobsです。私は2つの配列を比較してスペックを持っているBambooビルドでDateTimeフォーマットが変更された理由

def ranges 
    user.jobs.map { |u| [u.start_at, u.end_at] } 
end 

my_array = [[start1, end1], [start2, end2]] 
expect(ranges).to eq my_array 

テストデータも日時工場少女例えばから作成された私はstart_atとend_atは日時され、次のコードを使用してジョブをマップ

create(:jobs, start_at:DateTime.parse('2017-03-26 00:00:00'), end_at: DateTime.parse('2017-03-27 00:00:00')) 

すべてが竹は私の仕様を実行したとき、私はエラーを次取得期待し、正常に動作します:

expect 
[[2017-12-31 00:00:00.000000000 +0000, 2017-12-31 10:10:00.000000000 +0000], [2017-12-30 00:00:00.000000000 +0000, 2017-12-31 00:10:00.000000000 +0000], [2017-11-26 00:00:00.000000000 +0000, 2017-11-26 10:10:00.000000000 +0000], [2017-03-24 00:00:00.000000000 +0000, 2017-03-24 10:10:00.000000000 +0000], [2017-03-25 00:00:00.000000000 +0000, 2017-03-25 10:10:00.000000000 +0000], [2017-03-26 00:00:00.000000000 +0000, 2017-03-26 10:10:00.000000000 +0000]] 

[[Sun, 26 Mar 2017 00:00:00 UTC +00:00, Sun, 26 Mar 2017 10:10:00 UTC +00:00], [Sat, 25 Mar 2017 00:00:00 UTC +00:00, Sat, 25 Mar 2017 10:10:00 UTC +00:00], [Fri, 24 Mar 2017 00:00:00 UTC +00:00, Fri, 24 Mar 2017 10:10:00 UTC +00:00], [Sun, 26 Nov 2017 00:00:00 UTC +00:00, Sun, 26 Nov 2017 10:10:00 UTC +00:00], [Sat, 30 Dec 2017 00:00:00 UTC +00:00, Sun, 31 Dec 2017 00:10:00 UTC +00:00], [Sun, 31 Dec 2017 00:00:00 UTC +00:00, Sun, 31 Dec 2017 10:10:00 UTC +00:00]] 

線量と一致するように、私はすべての私のDateTimeオブジェクトをフォーマットする必要があり、この平均値をいつもiso8601で?何が原因で発生する可能性がありますBamboo

答えて

0

問題はあなたのフォーマットではありません。問題は、配列要素が同じ順序でないことです。 expectの配列の日付は2017-12-31の日付で始まり、matchの配列の日付は2017-03-26の日付で始まります。

RSpecのeqメソッドは、最初の配列の各要素が2番目の配列の同じインデックスの要素と同じ場合にのみtrueを返します。しかし、match_arrayメソッドは、順序にかかわらず2つの配列が同じ要素を持つ限り真を返します。

変更あなたの期待の行に:

expect(ranges).to match_array(my_array) 

そして、あなたが行ってもいいはずです。

関連する問題