6

rspec (Rails) を使用して JSON 応答をテストしようとしています[the original object].to_json。問題は、応答 JSON 文字列の フィールドupdated_atcreated_atフィールドが元のオブジェクトの同じフィールドとミリ秒単位で異なるため、テストが失敗することです。

テスト:

lesson = FactoryGirl.create(:lesson)
request.accept = "application/json"
get :show, {:id => lesson.to_param, :location_id => lesson.location_id}, valid_session
response.body.should eq lesson.to_json

結果:

expected: "{\"id\":1,\"location_id\":1,\"day_number\":5,\"time\":\"17:00\",\"min_age\":4,\"max_age\":10,\"created_at\":\"2013-10-02T00:51:53.870+03:00\",\"updated_at\":\"2013-10-02T00:51:53.870+03:00\"}"
        got: "{\"id\":1,\"location_id\":1,\"day_number\":5,\"time\":\"17:00\",\"min_age\":4,\"max_age\":10,\"created_at\":\"2013-10-02T00:51:53.000+03:00\",\"updated_at\":\"2013-10-02T00:51:53.000+03:00\"}"

期待値の 870 ミリ秒 (および実際の結果の 000 ミリ秒) を除いて、2 つの文字列は等しいことに注意してください。

どうすればそれをテストできますか?

4

3 に答える 3

4

json 応答の datetime をオブジェクトのdatetime_field.as_json:

expect(json_body).to eq {
  order: {
    ordered_at: order.ordered_at.as_json 

    # ... other fields
  }
}
于 2017-10-08T14:25:43.980 に答える
2

JSON 応答を解析し、次のことJSON.parse(response.body)を確認します。

1)lesson.attributes.keys解析された JSON とまったく同じキーが含まれています。

created_at2)およびを除く各値updated_atが、解析された JSON からの適切なキー値に一致することを確認しました。

3) 必要に応じて、存在をテストすることもできcreated_atますupdated_at

于 2013-10-01T22:20:25.417 に答える