12

ActiveRecord オブジェクトのタイムスタンプを返すメソッドの仕様があります。

仕様はローカルでは通用しますが、CircleCI で実行すると、予想と実際の間にわずかな不一致が生じます。

仕様は次のようになります。

describe '#my_method' do
  it 'returns created_at' do
    object = FactoryGirl.create(:something)
    expect(foo.bar(object)).to eq object.created_at
  end
end

ローカルではパスしますが、CircleCI では同様のエラー メッセージが継続的に表示されます。

以下に例を示します。

(1)

expected: 2015-05-09 10:42:59.752192641 +0000
got: 2015-05-09 10:42:59.752192000 +0000

(2)

expected: 2015-05-08 10:16:36.777541226 +0000
got: 2015-05-08 10:16:36.777541000 +0000

エラーから、CircleCI がタイムスタンプ値を切り上げているのではないかと推測していますが、十分な情報がありません。助言がありますか?

4

2 に答える 2

1

スキーマで time 列の精度を定義することもできます。このようにして、ActiveRecord は型キャストでの精度の切り捨てを処理します。

https://github.com/rails/rails/blob/39de1156970d52b441ff944862ebe16a47de784f/activemodel/lib/active_model/type/date_time.rb#L18を参照してください。

于 2020-05-21T19:38:52.763 に答える